前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图解 Java 位运算

图解 Java 位运算

作者头像
CoderJed
发布2018-09-13 10:38:49
3.4K0
发布2018-09-13 10:38:49
举报
文章被收录于专栏:Jed的技术阶梯Jed的技术阶梯

1. 原码、反码、补码的转换

(1) 正数的原码、反码、补码相同

(2) 负数的原码、反码、补码转换如下图所示

需要说明的是,在计算机中,数字是以补码的形式存在的,计算也是用补码来进行计算,计算后的结果也是补码

2. 位运算

(1) & : 按位与

5 & 9 = 1

(2) | : 按位或

5 | 9 = 13

(3) ^ : 按位异或

5 ^ 9 = 12

(4) ~ : 按位非

~5 = -6

(5) << : 左移

5 << 2 = 20

-5 << 2 = -20

(6) >> : 右移

-5 >> 2 = -2

(7) >>> : 无符号右移

-5 >>> 2 = 1073741822

3. 注意

  • 对于低于 int 类型(如byte、short和char)的操作数总是先自动转换为int类型后再移位
  • 对于 int 类型的整数移位 a >> b, 当 b>32 时,系统先用 b 对 32 求余(因为 int 是 32 位),得到的结果才是真正移位的位数,例如,a >> 33 和 a >> 1 的结果相同,而 a >> 32 = a
  • 对于 long 类型的整数移位 a >> b, 当 b>64 时,系统先用 b 对 64 求余(因为 long 是 64 位),得到的结果才是真正移位的位数
  • 当进行移位运算时,只要被移位的二进制码没有发生有效位的数字丢失(对于正数而言,通常指被移出去的位全部是 0),不难发现左移 n 位就相当于乘以 2 的 n 次方,右移 n 位则是除以 2 的 n 次方
  • 进行移位运算不会改变操作数本身,只是得到了一个新的运算结果
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.04.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 原码、反码、补码的转换
    • (1) 正数的原码、反码、补码相同
      • (2) 负数的原码、反码、补码转换如下图所示
      • 2. 位运算
        • (1) & : 按位与
          • (2) | : 按位或
            • (3) ^ : 按位异或
              • (4) ~ : 按位非
                • (5) << : 左移
                  • (6) >> : 右移
                    • (7) >>> : 无符号右移
                    • 3. 注意
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档