Java 进制转换与运算符操作归纳

二进制、八进制、十六进制间转换以及二进制的运算符和操作符总结(& | ^ ~ << >> >>> )

二进制

定义:有2 个基数:0 、1,逢二进一。

八进制

定义:有8个基数:0、1、2、3、4、5、6、7,逢八进一。

十进制

定义:有10个基数:0、1、2、3、4、5、6、7、8、 9 ,逢十进一。

十六进制

定义:有16个基数:0、1、2、3、4、5、6、7、8、9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15),逢十六进一。

各种进制之间的转换

  1. 十进制转二进制示例图:
  2. 二进制转十进制示例图:
  3. 二进制转八进制示例图:
  4. 二进制转十六进制示例图:
  5. 八进制转二进制示例图:
  6. 十六进制转二进制示例图:
  7. 十进制转八进制和十六进制示例图:
  8. 八和十六进制转十进制示例图:

Java位运算符

  1. ”与“、”位与“(&)
    定义:按位“与”操作符,如果两个数的二进制,相同位数都是1,则该位结果是1,否则是0。
    例子:9 & 8
    9的二进制:0000 0000 0000 1001
    8的二进制:0000 0000 0000 1000
    结果是: 0000 0000 0000 1000 (8)
  2. ”或“、“位或”(|)
    定义:按位“异或”操作符,如果两个数的二进制,相同位数只要有一个是1,则该位结果是1,否则是0。
    例子:9 | 8
    9的二进制:0000 0000 0000 1001
    8的二进制:0000 0000 0000 1000
    结果是: 0000 0000 0000 1001 (9)
  3. ”异或“、”位异或“ (^)
    定义: 按位“异或”操作符,如果两个数的二进制,相同位数只有一个是1,则该位结果是1,否则是0。
    例子:9 ^ 8
    9的二进制:0000 0000 0000 1001
    8的二进制:0000 0000 0000 1000
    结果是: 0000 0000 0000 0001 (1)
  4. ”非“、”位异非“(~)
    定义:按位“非”操作符,属于一元操作符,只对一个操作数进行操作,(其他按位操作符是二元操作符)。按位“非”生成与输入位相反的值,——若输入0,则输出1,若输入1,则输出0。
    例子:~9
    9的二进制:0000 0000 0000 1001 补码
    1111 1111 1111 1110 对9的二进制进行按位取反,不是求反码不要弄混淆
    1000 0000 0000 1001 对取反后的值再取反,符号位不变
    结果是: 1000 0000 0000 1010 对取反后的数据进行加“1”操作 (-10)
    例子:~-9
    -9的二进制:1000 0000 0000 1001 补码
    1111 1111 1111 0110 对-9的二进制进行按位取反,同理不是求负数的反码
    1111 1111 1111 0111 对取反后的二进制数据进行加“1”操作,符合位不变
    结果是: 0000 0000 0000 1000 对加“1”后的数据进行取反 (8)
  5. 原码、反码、补码
    定义:正数的原码、反码、补码都一样,负数的反码是对除了符号位(最高位)对原码取反,补码是对反码+1,计算机计算是用的补码。补码求原码也可以按照上述逻辑取反+1操作。
    举例:求-6的原码、反码、补码
    -6的原码: 1000 0000 0000 0110
    -6的反码: 1111 1111 1111 1001
    -6的补码: 1111 1111 1111 1010
  6. 位移操作
    (1)左移"<<"
    定义:左移就是将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,左边空的部分补0。
    举例:6<<2
    6的二进制是 0000 0000 0000 0110
    左移两位 0000 0000 0001 1000 (24)
    举例:-6<<2
    -6的二进制是 1111 1111 1111 1010 补码
    左移两位 1111 1111 1110 1000 左移
    1111 1111 1110 0111 反码
    1000 0000 0001 1000 原码 (-24)
    快捷计算 补码取反+1操作为原码
    (2)右移">>"
    定义:右移则复杂些,如果是正数则在高位补0,负数则高位补1。
    举例:6>>2
    6的二进制是 0000 0000 0000 0110
    右移两位 0000 0000 0000 0001 (1)
    举例:-6>>2
    -6的二进制是 1111 1111 1111 1010 补码
    右移两位 1111 1111 1111 1110 右移
    1111 1111 1111 1101 反码
    1000 0000 0000 0010 原码 即-2
    (3)无符号右移">>>"
    定义:无符号右移,无论最高位是0还是1,左侧被移空的高位都填入0。
    举例:6>>>2
    6的二进制是 0000 0000 0000 0110
    无符号右移两位 0000 0000 0000 0001 右移 即1
    举例:-6>>>2
    -6的二进制是 1111 1111 1111 1010 补码
    无符号右移两位 0011 1111 1111 1110 右移动
    0011 1111 1111 1101 反码
    1100 0000 0000 0010 原码 即1073741822
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值