【发布时间】:2021-06-04 15:35:51
【问题描述】:
赋值运算符不是我期望的。到目前为止,本节中的所有内容都很熟悉,但他们解释它的方式让它看起来很陌生。我认为这是我感到困惑的按位运算符。
无论如何,这是我没有得到的部分。
函数
bitcount计算其整数参数中 1 的位数。/*bitcount: count 1 bits in x */ int bitcount (unsigned x) { int b; for(b=0; x != 0; x >>= 1) { if(x & 01) b++; return b; }将参数
x声明为无符号可确保当它右移时,空出的位将用零填充,而不是符号位,无论程序运行在什么机器上。
并不是我真正理解代码,但最后一句话最让我困惑。这是什么意思? “符号位”表示“一”吗?这与二进制补码有关吗?
我真的很难通过按位运算。谁能推荐一些全面的材料来补充本书中的按位内容?
【问题讨论】:
-
我建议通过具有不同
x值(“负”和正值)的调试器运行代码。然后做同样的事情,但改用int x。 -
花几分钟查看bit shifting的真实值,看看效果。
标签: c bit-manipulation bitwise-operators assignment-operator twos-complement