计算机中数值编码的表示

2023-10-31

整数在计算机中的表示

在计算机中,因为只有0和1两种形式,为了表示数的正(+)、负(-)号,就要将数的符号以“0”和“1”编码。通常把一个数的最高位定义为符号位用“0”表示正“1”表示负,称为数符,这种把数本身(数值部分)及符号一起数字化的数称为机器数,机器数是数在计算机内的表示形式,而这个数真正表示的数值称为真值。

数的最高位为符号位0表示正,1表示负。

原码、反码、补码(假设计算机字长为8)

  1. 原码

整数x的原码指其数符位0表示正,1表示负。其数值部分就是x绝对值的二进制表示,通常用

[ x ]表示x的原码。例如:

[ +1 ]= 00000001 [ +127 ] = 01111111

[ - 1 ] = 10000001 [ - 127 ] = 11111111

由此可知,8位原码表示的最大值为2^7-1即127,最小值为-127,所能表示数的范围

是:-127 ~ 127。当采用原码表示时,编码简单,与真值转换方便。但原码也存在以下

一些问题:

  1. 在原码表示中,0有两种表示形式,即[ +0 ]=00000000,[ -0 ]=10000000。

零的二性定义给机器判断带来了麻烦。

  1. 原码进行四则运算时,符号位需要单独处理,增加了运算规则的复杂性。

  1. 反码

整数x的反码对于正数,与原码相同对于负数,数符位为1,其数值位是x的绝对值取反

即原码除了数符位其他数值位取反,通常用[ x ]表示x的反码。例如:

[ +1 ]= 00000001 [ +127 ] = 01111111

[ - 1 ] = 11111110 [ - 127 ] = 10000000

由此可知,8位反码表示的最大值为2^7-1即127,最小值为-127,所能表示数的范围

是:-127 ~ 127,和原码相同反码运算也不方便,很少使用,一般用作求补码的中间码。

  1. 补码

整数x的补码指对于正数,与原码、反码相同对于负数,在反码的基础上加1。通常

用[ x ]表示x的补码。例如:

[ +1 ]= 00000001 [ +127 ] = 01111111

[ - 1 ] = 11111111 [ - 127 ] = 10000001

在补码中,0有唯一的编码,即[ +0 ]=[ -0 ]=00000000,因而多出了一个编码10000000

扩展补码所能表示的数值范围,即负数最小-127扩大到-128。这里的最高位1既可以看作符号位,

又可以表示数值位,其值为-128,所以补码所能表示数的范围为-128~127。这就是补码与原码、反码最小值不同的原因。

原码、反码、补码对于正数都是一样的。

对于负数:反码除了数符位其他数值位取反,补码:反码的基础上加1。

❓字长为n位的计算机,它能表示的无符号整数范围是多少?能表示有符号的整数范围是多少?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机中数值编码的表示 的相关文章

随机推荐

Powered by Hwhale