谁能告诉我外行的位域是什么?我正在上一门调试 PHP 课程,讲师经常使用该术语。这是在 PHP 错误报告的上下文中。
以下是抄录中的一段话:
错误报告使用一个整数来设置错误报告级别,该整数通常通过一个命名常量来表示一个位字段。默认情况下,PHP 报告除 E_NOTICE 和 PHP 5.4 之前的版本之外的所有内容,也不包括 E_STRICT。
我认为作为一个有抱负的程序员,了解我的行业术语很重要 :)
谢谢你的帮助!
注意:我已经尝试过维基百科......
谁能告诉我外行的位域是什么?我正在上一门调试 PHP 课程,讲师经常使用该术语。这是在 PHP 错误报告的上下文中。
以下是抄录中的一段话:
错误报告使用一个整数来设置错误报告级别,该整数通常通过一个命名常量来表示一个位字段。默认情况下,PHP 报告除 E_NOTICE 和 PHP 5.4 之前的版本之外的所有内容,也不包括 E_STRICT。
我认为作为一个有抱负的程序员,了解我的行业术语很重要 :)
谢谢你的帮助!
注意:我已经尝试过维基百科......
我们需要从一点点开始。位将采用两个值——零或一。按照惯例,零也称为假,而一则称为真。
一个位域是几个位。
在这里,我将通过描述两种常见的位组织——字符和单词来离题。
在过去,PC 出现的字符是 8 位,而字是 32 位。今天,字正在转向 64 位字。字符正在移动到 16 位。
表示位域的整数
我不知道 PHP 是如何划分整数的,但这是我的想法。基本上,如果您在位级别查看整数,您会发现一些有意义的模式。
您需要了解十六进制和 2 的幂才能更清楚地理解这一点。
a 32 bit integer would be
0000 0000 0000 0000 0000 0000 0000 0000
Putting in two bit fields...
0000 0000 0000 0000 0000 0000 AAAA BBBB
从位中查看整数,您会发现两个字段 A 和 B,每个 4 位宽。
AAAA 可能具有十六进制值 1100 或 C BBBB 可能具有十六进制值 0111 或 7。
该整数的十六进制值为 C7 或十进制值为 199。
因此,用位字段查看整数 199 时会有不同的外观。
罗伯特
位字段被解释为整数类型。
句法:
struct structName
{
dataType identifierName1: numberOfBits;
dataType identifierName2: numberOfBits;
...
};
“numberOfBits”必须是非负整数值。
位域没有地址。对于位域数组,指向位域的指针和返回位域的函数是不可能的。
地址运算符 (&) 不能应用于位域
未命名的位域可以存在并且它们不能被引用。
运行时未命名位字段的内容是不可预测的。它们可以用作“虚拟”字段,用于对齐目的。
一个未命名的位域,其宽度指定为 0,保证声明列表中跟随它的成员的存储开始于 int 边界。
typedef struct bitField
{
unsigned x : 3; // 0 to +7 (3 bits)
signed : 2; // No name - 2 Bits of padding
signed y : 6; // -32 t0 +31 (6 bits)
unsigned : 0; // Force alignment to next boundary.
unsigned z : 1; // 0 or 1
} Temp;