原码、反码、补码、移码(介绍、相互转换、大小比较)

本文介绍了二进制编码的四种主要形式:原码、反码、补码和移码,以及它们之间的转换规则。原码直接用最高位表示符号,其余位表示数值;反码是负数的其他位取反;补码是负数在反码基础上最低位加1;移码则是补码加上一个固定值。对于正数,这四种编码方式相同,而负数则有所不同。文章还提供了大小比较的方法以及一个计算定点小数例子。
摘要由CSDN通过智能技术生成

目录

  1. 原码(Sign-Magnitude)
  2. 反码(Ones' Complement)
  3. 补码(Two's Complement)
  4. 移码(Excess-N)
  5. 他们之间的相互转换
  6. 大小比较
  7. 从老师PPT上抠的经典题目


1.原码(Sign-Magnitude)

方法:原码是最基本的表示法,它用最高位表示符号,其余位表示数值的绝对值。

 2.反码(Ones' Complement)

反码表示法是将原码中的负数符号位不变,其它各位取反

如果是正数,则反码与补码相同!!!

定点小数举例:x=+0.1001,则[x]原=0.1001,[x]反=0.1001(正数相同)

                        x=-0.1001,则[x]原=1.1001,[x]反=1.0110

定点整数举例:x=+1001,则[x]原=01001,[x]反=01001(正数相同)

                        x=-1001,则[x]原=11001,[x]反=10110

3.补码(Two's Complement)

方法:

正数:与原码一样

负数:反码的基础上最低有效位+1

定点小数举例:x=+0.1001,则[x]原=0.1001,[x]反=0.1001,[x]补=0.1001(正数相同)

                        x=-0.1001,则[x]原=1.1001,[x]反=1.0110,[x]补=1.0111

定点整数举例:x=+1001,则[x]原=01001,[x]反=01001,[x]补=01001(正数相同)

                        x=-1001,则[x]原=11001,[x]反=10110,[x]补=10111

4.移码(Excess-N)//速成版

移码是将补码的所有数值加上一个固定值,然后表示为二进制数的形式。例如,如果选择将补码加上128,则补码为0的数的移码表示为10000000。

速成记法:将移码数值位不变,符号位取反(该用法仅限于计算机组成网络课程)

定点小数举例:

x=+0.1001,则[x]原=0.1001,[x]反=0.1001,[x]补=0.1001(正数相同),[x]移=1.1001

x=-0.1001,则[x]原=1.1001,[x]反=1.0110,[x]补=1.0111,[x]移=0.0111

定点整数举例:

x=+1001,则[x]原=01001,[x]反=01001,[x]补=01001(正数相同),[x]移=11001

x=-1001,则[x]原=11001,[x]反=10110,[x]补=10111,[x]移=00111

5、相互转换

(1)如果是正数,原码、反码、补码都一致

x=+0.1001,则[x]原=0.1001,[x]反=0.1001,[x]补=0.1001(正数相同)

x=+1001,则[x]原=01001,[x]反=01001,[x]补=01001(正数相同

(2)反码符号位、补码符号位、与原码符号位一致,移码符号位与他们三相反

(3)移码符号位取反可得补码

[x]补=01001,则[x]移=11001

[x]补=10111,则[x]移=00111

[x]补=1.0111,则[x]移=0.0111

(4)两次求补码即可得原码

x=-1001,则[x]原=11001,[x]反=10110,[x]补=10111

y=[x]补=10111,则[y]补=11001=[x]原

(5)如果是符号位为负数,则补码最低有效位-1得反码

       [x]补=10111, [x]反=10110

(5)反码由原码推出(参见2反码介绍)

(6)补码由反码推出(参见3补码介绍)

(7)移码由补码推出(参加4移码介绍)

6、大小比较

1、反码之间比较大小的方法

反码的大小比较方法较为简单,只需要比较符号位和数值位的大小即可。若两个数的符号位相同,则比较数值位的大小,大的数更大;若两个数的符号位不同,则正数更大。

例如,+3的反码为00000011,-2的反码为11111101,因为+3和-2的符号位不同,因此00000011更大。先比较红色标出的符号位,符号位一致则比较蓝色标出数值位。

2、补码之间比较大小的方法

        正数:直接按原码比较大小

        负数:转化成反码再比较

2、移码之间比较大小的方法

        转换成补码 相互转换中的(3)移码符号位取反可得补码

       用补码比较

       

7、经典题目

【练】设机器字长为8位,用于表示定点小数,其中已知符号位占1位,数值位7位;若数N=-23/128,求N的原码,反码,补码(用二进制表示)。

【解】先求数N的二进制表示,:

分子23=10111,分母128=2的七次方

N=-0. 0010111

因此,数N的原码,反码,补码分别为:

[×]原=1.0010111

[X]反=1.1101000

[X]补= 1.1101001

  • 10
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤儿屯鼠鼠之友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值