计算机原码、反码、补码区别和位运算

计算机码

原码
反码
补码

关键

1、计算机显示出来的是原码,存储的是补码
2、正数原码、反码、补码三者都一样
3、负数原码取反得到反码,+1得到补码,如最后位是1,逢2进1即可,如例题3
4、换成二进制最高位(第一位)是符号位,而非数字位,为正是正数,为负为负数

例题

  1. 5
    原码 0000 0000 0000 0101
    反码 0000 0000 0000 0101
    补码 0000 0000 0000 0101

  2. -5
    原码 1000 0000 0000 0101
    反码 1111 1111 1111 1010
    补码 1111 1111 1111 1011

  3. -8
    原码 1000 0000 0000 1000
    反码 1111 1111 1111 0001
    补码 1111 1111 1111 0010

位运算

位运算:取出计算机中最小的单位(位bit)进行运算

&:按位与,两个位都为1,结果为1,否则为0
|:按位或,两个有一个为1,结果为1
~:按位非,一个位如果为1则变成0,否则反之个
^:按位异或,两个相同则为0,不同则为1
<<:按位左移,整个位(32),向左移动一位,右边补0
>>:按位右移,整个位向右移动一位,左边补符号位对应内容(正数补0,负数补1)

例题

  1. 7^(-8)

7
原码 0000 0000 0000 0111
反码 0000 0000 0000 0111
补码 0000 0000 0000 0111

-8
原码 1000 0000 0000 1000
反码 1111 1111 1111 0111
补码 1111 1111 1111 1000

补码运算 ^相同为0 不同为1
补码
0000 0000 0000 0111
1111 1111 1111 1000
运算后补码 1111 1111 1111 1111
反码 1111 1111 1111 1110
原码 1000 0000 0000 0001
补码运算显示原码
原码即为-1

  1. 左移(<<)右移(>>)

(1)负数
-7
原码 1000 0000 0000 0111
反码 1111 1111 1111 1000
补码 1111 1111 1111 1001

左移两位(补0)
补码(11) 1111 1111 1110 0100
反码 1111 1111 1110 0011
原码 1000 0000 0001 1100
结果-28

右移两位(补1)
补码 1111 1111 1111 1110 (01)
反码 1111 1111 1111 1101
原码 1000 0000 0000 0010
结果2

(2)正数
7
原码 0000 0000 0000 0111
反码 0000 0000 0000 0111
补码 0000 0000 0000 0111

左移两位(补0)
补码(11) 0000 0000 0001 1100
反码 0000 0000 0001 1011
原码 0111 1111 1110 0100
结果 4+32+64+128+256+512+1024+2048+4096+9192+18384

右移两位(补0)
补码 0000 0000 0000 0001
反码 0000 0000 0000 0000
原码 0111 1111 1111 1111
结果 1+2+4+8+16+32+64+128+256+512+1024+2048+4096+
9192+18384

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值