java 中负数左移运算的疑问?

例子:-59 << 3

-59 的二进制原码:10111011
           反码:11000100
           补码:11000101
左移三位后的补码:00101000
           反码:00100111
           原码:01011000

01011000 转为十进制是 88,但是在 java 中执行的结果是 -472,请问是哪一步出错了,感激不尽

阅读 1.6k
1 个回答

java 的 int 有 32 位,所以 -59 是
11111111 11111111 11111111 11000101

左移之后:
11111111 11111111 11111110 00101000

你再算算转回去是多少

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题