在您引用的两种情况下,数字的位模式很重要,而不是实际的数字。
例如,
在第一种情况下,j
随着循环的进行,将变为 1,然后是 2、4、8、16、32、64,最后是 128。
用二进制表示,即
0000:0001
, 0000:0010
, 0000:0100
, 0000:1000
, 0001:0000
, 0010:0000
, 0100:0000
and 1000:0000
.
C(直到 C23)或 C++(直到 C++14)中没有二进制常量选项,但在十六进制中更清晰一些:0x01
, 0x02
, 0x04
, 0x08
, 0x10
, 0x20
, 0x40
, and 0x80
.
在第二个例子中,
目标是删除该值的低两个字节。
因此,给定值为 1,234,567,890,我们希望最终得到 1,234,567,168。
在十六进制中,更清楚:从0x4996:02d2
, 结束于0x4996:0000
.