java 二进制左移位问题

qq_25255553 2018-01-24 07:12:34
今天看到java编程思想中有这么一段代码,关于左移位
int i = -1172028779;
System.out.println(Integer.toBinaryString(i << 5));

其答案是1000100100010000101001010100000;

i的补码是10111010001001000100001010010101;
但我觉得应该是11000100100010000101001010100000;
什么不解为什么标准答案少了一位1.求大神解答
...全文
377 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_25255553 2018-01-25
  • 打赏
  • 举报
回复
引用 3 楼 dong_19890208 的回复:
引用 2 楼 qq_25255553 的回复:
不好意思,我问题描述的不是很清楚,i的补码是10111010001001000100001010010101,它左移五位应该是11000100100010000101001010100000,而eclipse给出的答案是 1000100100010000101001010100000,不是很清楚他这样不是相当于高位移动了六位?
10111010001001000100001010010101 从左往右第五位跟第六位不是10吗?怎么会是11,你自己数错了吧
概念搞错了,,以为第一位是不变的。现在知道了
dong_19890208 2018-01-25
  • 打赏
  • 举报
回复
引用 2 楼 qq_25255553 的回复:
不好意思,我问题描述的不是很清楚,i的补码是10111010001001000100001010010101,它左移五位应该是11000100100010000101001010100000,而eclipse给出的答案是 1000100100010000101001010100000,不是很清楚他这样不是相当于高位移动了六位?
10111010001001000100001010010101 从左往右第五位跟第六位不是10吗?怎么会是11,你自己数错了吧
qq_25255553 2018-01-25
  • 打赏
  • 举报
回复
不好意思,我问题描述的不是很清楚,i的补码是10111010001001000100001010010101,它左移五位应该是11000100100010000101001010100000,而eclipse给出的答案是 1000100100010000101001010100000,不是很清楚他这样不是相当于高位移动了六位?
oyljerry 2018-01-24
  • 打赏
  • 举报
回复
补码是取反再加一。这是规定。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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