![]() |
1
4
根据 the documentation 以下内容:
所以在你的情况下
请注意,虽然这些与您所写的不同,但答案与您为什么得到0相同,请考虑以下几点:
方括号表示实际用于确定数字值的值,左边的部分被丢弃。如您所见,您已经将1从数字的左边一路位移,结果0被移到了左边。 注意下面的代码片段,达到32移位标记后,所有结果都为0:
|
![]() |
2
0
左位移位的语义在 ES2018 section 12.9.3.1 是的。要理解的主要问题是,左操作数被转换为32位有符号整数,结果也是32位整数。 在左位移位中,左操作数按右操作数(最低5位)指定的位数移位。
例如,
到
那就是
手术
当你把这个调高8位的时候
这是35位。由于位移位的输出总是一个有符号的32位数字,所以它会丢失其最高位,从而导致较低的32位表示
|
![]() |
no one special · 32位整数缩放,无溢出 7 年前 |
![]() |
Benn Tan · 比特操作:更难翻动硬币 7 年前 |
![]() |
Ganesh Thampi · 使用位运算符将十进制转换为二进制 7 年前 |
![]() |
Ganesh Thampi · 使用位的奇偶程序 7 年前 |
![]() |
datapanda · 三维网格的莫顿反向编码 7 年前 |
![]() |
rubyquartz · 交换无符号短整数的字节 7 年前 |
|
John Proctor · C中位的掩蔽范围 7 年前 |
![]() |
Areg Sarvazyan · 从无符号int中提取位的函数 7 年前 |
|
user9505617 · 按位异或0xFFFFFFFF? 7 年前 |