-1>>2 为什么还是-1?

-1 >> 2 为什么还是-1?

-1的补码:1111 1111 1111 1111。

右移三位不应该时变为:1001 1111 1111 1111吗?

阅读 4.9k
2 个回答

右移分为有符号右移(>>)和无符号右移(>>>)两种,前者补符号位,后者补0。
-1>>2为有符号右移,高位补符号位也就是1,而-1的补码为全1,右移后还是全1,所以不变。

负数带符号右移补1

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