【知识】原码、反码、补码

 

一、真值、机器数(原码、反码、补码)定义

真值

一般书写表示的数

X=-110 0111,y=110 0110

机器数

原码

符号位+数值

[x]原=1110 0111,[y]原=0110 0110

反码

正数的反码是符号位0+数值;

负数的反码是符号位1+数值各位取反

[x]反=1001 1000,[y]反=0110 0110

补码

正数的补码是符号位0+数值;

负数的补码是符号位1+数值各位取反后,最低位加1

[x]补=1001 1001,[y]补=0110 0110

二、0的机器数

真值

000 0000

-000 0000

机器数

原码

[+0]原=0000 0000

[-0]原=1000 0000

反码

[+0]反=0000 0000

[-0]反=1111 1111

补码

[+0]补=0000 0000

[-0]补=0000 0000

注:0的原码、反码表示方法有两种,0的补码表示方法唯一

三、表示范围

机器数

原码

无符号

0000 0000~1111 1111

0~255

有符号

1111 1111~0111 1111

-127~127

反码

有符号

1000 0000~0111 1111

-127~127

补码

有符号

1000 0000~0111 1111

-128~127

注:建议记住上表结论即可

1、1000 0000反=1111 1111原=-127

   1111 1111反=1000 0000原=-0

2、1000 0000补=1111 1111反=1000 0000原=-128发生了溢出,不能影响符号位  ???

1111 1111补=1111 1110反=1000 0001原=-1

机器数

原码

无符号

0~2^n-1

有符号

-2^(n-1)+1~2^(n-1)-1

反码

有符号

-2^(n-1)+1~2^(n-1)-1

补码

有符号

-2^(n-1)~2^(n-1)-1

注:建议记住上表结论即可

没有指明编码方式,计算机n位二进制无符号数的范围是0~2^n-1,有符号数的范围是-2^(n-1)+1~2^(n-1)-1

四、总结

       1、原码:

             0表示方法不唯一;

             计算结果会错误:   1 - 1 = 1 + (-1) = 0000 0001(原 )+ 1000 0001(原 )= 1000 0010(原) = -2

       2、反码:

            0表示方法不唯一;

            计算结果正确:   1 - 1 = 1 + (-1) = 0111 1110(反 )+ 1111 1110(反 )= 0000 0000(反) = 0

       3、补码:

           实现0表示方法的唯一性;

           减法用加法形式来运算;

           能多表示一个最小数(如8位,范围是-128~127,规定用1000 0000来表示-128,最小数逻辑上没有对应的原码)
 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值