卿搞笔 发表于 2025-9-24 13:46:14

位移运算符

想象一个数字:5的二进制


[*]十进制:5
[*]二进制:00000101(为了直观,我们用8位表示)
<strong>1. 左移( 2
00010100 → 往右挤2位 → 00000101(结果是5,即20÷4=5)负数:-8 >> 2
-8的二进制是11111000(补码表示)→ 往右挤2位 → 11111110(结果是-2,即-8÷4=-2)</ul>3. 无符号右移(>>>):强行补0

规则:无论正数负数,左边统统补0。
结果:负数会变成正数!
例子:

[*]-8 >>> 2
-8的二进制是11111000 → 往右挤2位并补0 → 00111110(结果变成62!符号位被0覆盖了)
一句话总结


[*]:右移除2,负数补1,正数补0。
[*]>>>:右移除2,统统补0(Java专属)。
现在试试?

如果x = 3,那么:

[*]x > 1 = 1(3÷2向下取整)
试试看对不对?

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 位移运算符