前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >移位运算(无符号移位运算,有符号移位运算)

移位运算(无符号移位运算,有符号移位运算)

作者头像
全栈程序员站长
发布2022-09-14 09:47:36
1.4K0
发布2022-09-14 09:47:36
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

移位运算,所有移位以5和-5为例

移位运算

可以移位运算的类型有:iuint,int,lang等类型.我们本次使用int类型 一个int类型占4个字节,共32位,带符号位,所以最高位位符号位(使用0,1表示符号位)

我们首先需要了解正数和负数的二进制码分别如何表示(以5和-5为例)

正数:0000 0000 0000 0101 负数:1000 0000 0000 0101

移位操作在二进制中都是补码移位在转会为原码得到相应的值 正数的反码,补码与原码相同 负数的反码为除符号位全部取反 负数的补码为反码加1

所以 在对正数进行移位操作时就是对原码进行操作 负数是对补码操作,操作完成后再转换为原码得到对应的值 所以-5的补码为:1111 1111 1111 1011

左移(<<)

正数

代码语言:javascript
复制
 5左移三位:0000 0000 0010 1000 =40

负数

-5左移三位:补码:1111 1111 1101 0111 原码:1000 0000 0010 1000 得:-40

带符号右移(>>)(右移向前面补对应的符号位所对应的值(正数补0,负数补1))

正数

5右移三位:0000 0000 0000 0000 =0

负数

-5右移三位:补码:1111 1111 1111 1111 反码:1111 1111 1111 1110 原码:1000 0000 0000 0001 得:-1

不带符号右移(>>>)(>>>为java独有语法)

正数

5右移三位:0000 0000 0000 0000 =0

负数

-5右移三位:补码:0001 1111 1111 1111 1111 1111 1111 1111 反码:0001 f f f f f f 1110 得:536 870 911

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158530.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 移位运算,所有移位以5和-5为例
  • 移位运算
  • 左移(<<)
    • 正数
      • 负数
      • 带符号右移(>>)(右移向前面补对应的符号位所对应的值(正数补0,负数补1))
        • 正数
          • 负数
          • 不带符号右移(>>>)(>>>为java独有语法)
            • 正数
              • 负数
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档