跳转到内容
新建笔记

位运算与移位

1 << 20 把整数 1 的二进制位左移 20 位,数学结果为 220=1,048,5762^{20}=1,048,576。

它本身只是一个整数;只有把它用作字节数时,才表示 1 MiB。1 MB 通常指十进制的 1,000,000 字节,两者不要混用。

1 << 0 = 0001 = 1
1 << 1 = 0010 = 2
1 << 2 = 0100 = 4
1 << 3 = 1000 = 8

使用移位时要确认操作数类型和位宽。对有符号整数进行越界移位可能产生未定义或依赖语言的结果;表达位掩码时优先使用无符号类型,例如 C/C++ 中的 1u << n。