我正在尝试进行赋值:“在不使用 sizeof() 函数的情况下查找无符号整数数据类型中的位数。”
我的设计是将整数转换为位,然后对它们进行计数。例如:10 是 1010
,5 是 101
Converting integer to a bit representation显示如下:
do
{
Vec.push_back( x & 1 )
}
while ( x >>= 1 );
我不想只是复制粘贴的东西。当我使用 F-10 时,我看到 (x & 1)
正在做什么,但我不知道它的名称或它是如何工作的(比较一下?)。我也知道 >=
哪个“大于或等于”,但 x >>= 1
是什么?
注意:标记的拷贝是 JavaScript 而不是 C++
最佳答案
这些是位运算符(reference)。
x & 1
产生的值是 1
或 0
,取决于 x
的最低有效位: 如果最后一位是 1
,x & 1
的结果是 1
;否则为 0
.这是按位与运算。
x >>= 1
表示“将 x
设置为自身向右移动一位”。表达式的计算结果为 x
的新值换类后。
注意:对于无符号类型的值,移位后最高有效位的值为零。对于有符号类型的值,最高有效位是在作为符号扩展的一部分进行移位之前从值的符号位复制的,因此如果x
,循环将永远不会结束。是有符号类型,初始值为负数。
关于c++ - 什么是 (x & 1) 和 (x >>= 1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922606/