计算机中数值编码的表示

整数在计算机中的表示

在计算机中,因为只有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位的计算机,它能表示的无符号整数范围是多少?能表示有符号的整数范围是多少?

💡字长为n位的计算机,它能表示无符号的整数范围是0~2^(n-1)-1,它能表示有符号的整数范围

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

浮点数在计算机中的表示

计算机中小数点是不占位置的。因此规定根据小数点的位置来表示,分别为定点整数、定点小数

和浮点数三种形式

  1. 定点整数

指小数点隐含固定在机器数的最右边,定点整数是纯整数

符号位 数值部分 .(小数点位置)

  1. 定点小数

约定小数点位置在符号位与有效数值部分之间,定点小数是纯小数,即所有数绝对值均小于1

符号位 . (小数点位置)数值部分

  1. 浮点数

  • 定点数表示的数在实际应用中是不够用的,尤其在科学计算中。为了能表示特大或特小的数,采用“浮点数”或称“指数形式”表示。

  • 浮点数由阶码和尾数两部分组成:阶码用定点整数来表示,阶码所占的位数确定了数的范围。

尾数用定点小数来表示,尾数所占的位数确定了数的精度。

  • 浮点数的表示方法和科学计数法相似,任意一个数均可通过改变其指数部分,是小数点发生移动,

如十进制数56.78可以表示为5.678*10^1、0.5678*10^2、0.05678*10^3等各种不同形式。

  • 在计算机中,浮点数的一般表示形式为N=2^E*D,E为阶码,D为尾数。

对于不同的机器,阶码和尾数各占多少位,分别用什么码制进行表示都有具体规定。在实际应用中,浮点数的表示首先要进行规格化,即转换成2^E与一个纯小数之积并且小数点后的第一位是1,这样的浮点数称为规格化数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值