原码,反码,补码,移码转换技巧

      

       现在是准备软考的阶段,今天专业课上老师讲到了原码,反码,补码和移码,听得有点乱正好这些东东在软考的时候也会涉及的到,所以这两方面的原因我不得不来好好总结一下这四位大码。

 

一.先说为什么会有原码,反码,补码,移码

答:

在计算机里面,为了满足四则运算的要求,规定了原码、反码、补码,

为了数值之间大小的相互比较及一些格式数据记录的方便,而规定了移码.

 

 

二.分别用公式给大家介绍原码,反码,补码,移码(注:n表示机器字长)

 

1、原码的定义

原码,反码,补码,移码转换技巧_第1张图片

2、补码的定义

   原码,反码,补码,移码转换技巧_第2张图片

 3、反码的定义

原码,反码,补码,移码转换技巧_第3张图片

4.移码:移码只用于表示浮点数的阶码,所以只用于整数。

 

(1)移码的定义:设由1位符号位和n位数值位组成的阶码,则 [X]移=2n + X      -2n≤X ≤ 2n

例如: X=+1011      [X]移=11011      符号位“1”表示正号

              X=-1011     [X]移=00101     符号位“0”表示负号

 

(2)移码与补码的关系: [X]移与[X]补的关系是符号位互为反码,

例如: X=+1011      [X]移=11011      [X]补=01011

              X=-1011     [X]移=00101      [X]补=10101  

 

怎么样?这些数学式子把大家弄迷惑没?其实这几位大码没这么难搞,没关系的,总结一下就好记了

 

 

三.下面我从正数和负数两方面对比说明他们之间的转换技巧:

 

 

正数(定点小数、定点整数):

原码,补码,反码相同;

        移码只要在原码的最高位+1就可以啦,若数值最高位有进位则丢弃(不向符号位进位)

 

负数(定点小数、定点整数):

 反码:保持原码符号位不变,数值位取反

 补码:第一种方法给反码的最低位+1就可以啦,若数值最高位有进位则丢弃(不向符号位进位)

                 第二种方法以原码为基础,符号位不变,其他从最低位开始,直到遇到第一个1之前什么都不变,遇到第一个1保留 

                 这个1,其他位按位取反。(个人认为这种方法比较好用

 移码:与补码的符号相反,数值位保持不变就可以啦

 

例如,当编码总位数为8时有:

+127的原码、反码、补码都为:0 1111111。

-127的原码、反码、补码依次为:1 1111111、1 0000000、1 0000001。

+0、-0的原码分别为:0 0000000、1 0000000,均对应真值0。

 

由于“编码总位数为8”的限制,真值-128无法用原码、反码来表示,似乎不能用上述规则来求解补码,但实际上是可行的——只要不管它的最高位即可,操作办法如下:

将128化为二进制为:10000000,最高位为1,可以只对舍去最高位后剩余的7位进行处理即可,首先取反得:1111111,加1得:1 0000000,最高位有进位需丢弃,即得:0000000,加上符号位就得补码:1 0000000。

 

又如,当编码总位数为4时,真值X=+0.101的原码、反码、补码均为:0101。

真值X=-0.101的原码、反码、补码依次为:1101、1 010、1 011。

注:在定点小数中,小数点隐含在第一位编码和第二位编码之间。

 

使用这样的方法进行这四码的转换,相对于套公式,个人认为轻松的多。

你可能感兴趣的:(软考知识点)