原码、反码、补码

1、二进制的第一位代表符号位 0代表正数 1代表复数

2、正数的原码、反码、补码都一样

3、负数的反码=符号位不变其他位取反

4、负数的补码=它的反码+1

5、计算机在运算时、是以它的补码来运算的、最后的结果以原码来显示

2、-2、-5的原码、反码、补码

2的原码: 00000000 00000000 00000000 00000010

2的反码: 00000000 00000000 00000000 00000010

2的补码: 00000000 00000000 00000000 00000010

-2的原码: 10000000 00000000 00000000 00000010

-2的反码: 11111111 11111111 11111111 11111101

-2的补码: 11111111 11111111 11111111 11111110

-5的原码: 10000000 00000000 00000000 00000101

-5的反码: 11111111 11111111 11111111 11111010

-5的补码: 11111111 11111111 11111111 11111011

位运算

&位于与、|位于或、^位于异或、~位于取反

2 & -2

2 | -2

2 ^ -2

~2

2>>1        它的补码向右移一位        用符号位补其

2<<1        它的补码左移一位           用0来补齐

2  & -2

2的原码: 00000000 00000000 00000000 00000010

2的反码: 00000000 00000000 00000000 00000010

2的补码: 00000000 00000000 00000000 00000010

-2的原码: 10000000 00000000 00000000 00000010

-2的反码: 11111111 11111111 11111111 11111101

-2的补码: 11111111 11111111 11111111 11111110

2的补码 : 00000000 00000000 00000000 00000010

2&-2的补码 :      00000000 00000000 00000000 00000010

2&-2的原码:       00000000 00000000 00000000 00000010

System.out.println(2&-2)         //最后输出为2

2  | -2

2的原码: 00000000 00000000 00000000 00000010

2的反码: 00000000 00000000 00000000 00000010

2的补码: 00000000 00000000 00000000 00000010

-2的原码: 10000000 00000000 00000000 00000010

-2的反码: 11111111 11111111 11111111 11111101

-2的补码: 11111111 11111111 11111111 11111110

2的补码 : 00000000 00000000 00000000 00000010

2|-2的补码 :      11111111 11111111 11111111 11111110

2|-2的反码:       11111111 11111111 11111111 11111101

2|-2的原码:       10000000 00000000 00000000 00000010

System.out.println(2|-2)         //最后输出为-2

 

2 ^ -2

2的原码: 00000000 00000000 00000000 00000010

2的反码: 00000000 00000000 00000000 00000010

2的补码: 00000000 00000000 00000000 00000010

-2的原码: 10000000 00000000 00000000 00000010

-2的反码: 11111111 11111111 11111111 11111101

-2的补码: 11111111 11111111 11111111 11111110

2的补码 : 00000000 00000000 00000000 00000010

2^-2的补码 :      11111111 11111111 11111111 11111100

2^-2的反码:       11111111 11111111 11111111 11111011

2^-2的原码:       10000000 00000000 00000000 00000100

System.out.println(2^-2)         //最后输出为-4

 

~2

2的原码: 00000000 00000000 00000000 00000010

2的反码: 00000000 00000000 00000000 00000010

2的补码: 00000000 00000000 00000000 00000010

~2的补码: 11111111 11111111 11111111 11111101

~2的反码: 11111111 11111111 11111111 11111100

~2的原码: 10000000 00000000 00000000 00000011

System.out.println(~2)         //最后输出为-3

 2>>1

2的原码: 00000000 00000000 00000000 00000010

2的反码: 00000000 00000000 00000000 00000010

2的补码: 00000000 00000000 00000000 00000010

2>>1的补码: 00000000 00000000 00000000 00000001

2>>1的反码: 00000000 00000000 00000000 00000001

2>>1的原码: 00000000 00000000 00000000 00000001

最后输出的结果为1

- 2<<1

-2的原码: 10000000 00000000 00000000 00000010

-2的反码: 11111111 11111111 11111111 11111101

-2的补码: 11111111 11111111 11111111 11111110

2<<1的补码: 11111111 11111111 11111111 11111100

2<<1的反码: 11111111 11111111 11111111 11111011

2<<1的原码:   10000000 00000000 00000000 00000100

最后的结果为-4

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值