关于   小悟志   网站地图   归档   友情链接   联系   Feed

   云上小悟  +  

当前位置 : 首页 » InfoTech » 原码,反码,移码 正文

原码,反码,移码

2017年5月23日 / 7次阅读  InfoTech
标签:计算机

拍拍贷

文章《原码,反码,移码》的特色图片

原码:

计算机数值数据的原码表示中,正数和负数的编码,只有符号位不同,数值部分完全相同。

原码表示的有点是与真值的对应关系直观方便,因此与真值的转换简单,并且用原码实现乘除运算比较简便。

原码的缺点是:

1, 0的表示不唯一,有+0和-0;

2, 原码加减运算规则复杂;在进行原码加减运算过程中,要判定是否是两个异号数相加或两个同号数相减,若是,则必须判定两个数的绝对值大小,根据判断结果决定结果的符号,并用绝对值大的数减去绝对值小的数。

现代计算机中不用原码来表示整数,只用其表示浮点数的尾数部分。

 

反码:

负数的补码可采用“各位求反,末尾加1”的方法得到,如果仅各位求反而末尾不加1,那么就可以得到负数的反码表示,因此负数的反码的定义就是在相应的补码表示中再末尾减1.

正数的反码就是其本身(正数的原码,补码,反码全都一样)

反码表示存在几个不足:

1, 0的表示不唯一;

2, 表示范围比补码少一个最小负数;

3, 运算时必须考虑循环进位。

因此,反码在计算机中很少被使用,有时用作数码变换的中间表示形式。

 

移码:

一般情况下,浮点数的阶码使用一种称之为“移码”的编码方式表示。

为什么要用移码表示阶码呢?

因为阶码E可以是正数,也可以是负数,当进行浮点数的加减运算时,必须先“对阶”(即比较两个浮点数阶码的大小)。为了简化比较操作,使操作过程不涉及阶码的符号,可以对每个阶码都加上一个正的常数(在补码的基础上加),成为偏置常数(bias),使所有阶码都转换为正常数,这样,在对浮点数的阶码进行比较的时候,就是对两个正常数进行比较,因而可以直观地将两个数按位从左到右进行比对,简化了“对阶”的操作。

移码的偏置定义为:\(2^{n-1}\)

(对于n个bit为的数,\(2^{n-1}\)表示在最高位置1,\(2^n\)表示补码中的模)

这个偏置的定义,相当于将整数的最小负数在加上偏置之后,得到0。也即,所有的负数都变成了0和正数。整数加上偏置,为啥还是正数?因为系统在比较的时候,已经把加上偏置的数按照无符号编码来进行比较,不再有符号位了。

\([-2^{n-1}]_{移}=00...0\)

0的移码表示唯一,因为0的补码也是唯一的。

移码和补码,仅符号位不同。

 

推荐阅读:补码,模运算和溢出

本文链接:http://www.maixj.net/ict/yuanma-fanma-yima-15421
云上小悟 麦新杰(QQ:1093023102)

-- (*^-^*) --

相关文章

评论是美德

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.


前一篇:
后一篇:

栏目精选


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号苏ICP备14045477号-1

网站二维码
拍拍贷
go to top