java 位运算符的问题

我哭了谁来疼 2012-08-22 12:43:28
int a=3<<2;
结果是:12;为什么?是怎么执行

int a=3>>2;
结果是:0; 为什么?是怎么执行的
...全文
86 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cactus_hxk 2012-08-22
  • 打赏
  • 举报
回复
因为3的二进制为11,那么它左移2位就是1100,而1100的十进制为12,相反右移2位那就是0
shine333 2012-08-22
  • 打赏
  • 举报
回复
X(B)代表二进制

3 << 2 代表

0000000000000011(B) 向左移两位,得到
0000000000001100(B) = 8 * 1 + 4 * 1 + 2 * 0 + 1 * 0 = 12

同理,15 << 3
15 = 8 + 4 + 2 + 1
0000000000001111(B) 向左移3位,得到
0000000001111000(B) = 64 * 1 + 32 * 1 + 16 * 1 + 8 * 1 + 4 * 1 + 2 * 0 + 1 * 0 = 120

3 >> 2 代表向右移,但最高位(符号位)不动
0000000000000011(B)向右移两位,得到
0000000000000000(B) = 0
龙四 2012-08-22
  • 打赏
  • 举报
回复

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧