计算机信息存储单位,数制编码总结

有符号数在计算机内部是以二进制补码形式存储的,其最高位为符号位,"0"表示正数,"1"表示负数。无符号数只能是正数,在计算机内是以绝对值形式存放的

在计算机内部,各种信息都是以二进制编码形式存储的,信息存储的单位通常采用:”,”字节”,”

(bit):度量数据的最小单位,表示一位二进制信息。

字节(byte):一个字节由8位二进制数字组成(1byte = 8 bit)。

(word):字是位的组合,并作为一个独立的信息单位处理。字又称之为计算机字,它的含义取决于机器的类型,字长以及使用者的要求。常用的固定字长有8位,16位,32位等。

机器字长:机器字长是与机器硬件指标有关的单位。机器字长一般是指参与运算的寄存器所含有的二进制数的位数,代表了机器的精度。

 

一个数在机内的表达形式称为机器数,而它代表的数值称为此机器数的真值

虽然信息在计算机内部是以二进制形式存储,但是数值信息分为有符号和无符号,数值信息的有无符号在存储上可以直接通过01来区分,但是运算时比较麻烦,为了改进符号数的运算方法和简化运算器的硬件结构,人民研究了符号数的多种二进制编码方法,其实质就是对负数表示的不同编码。现在最常用的编码就是原码,反码和补码

1原码

将符号位数字化为01,数的绝对值与符号一起编码,即所谓的符号-绝对值表示的编码,称为:原码。

X = +0101011     [X]= 00101011

X = - 0101011     [X]=10101011

上面的”[X]就是机器数,X称为机器数的真值。

那么对于一个带符号的纯小数,它的原码表示就是把小数点左边一位用作符号位。例如:

X = 0.1011   [X] = 0.1011

X =-0.1011   [X] =1.1011

当采用原码表示时,编码简单直观,但在原码表示中,零的表示不唯一,因为:

[+0] = 000……0    [-0] = 100……0

上面的零表示不同,即存在二义性,给机器判零带来麻烦。此外,用原码进行四则运算时,符号位需要单独处理,其运算规则复杂,且,借位操作如果用计算机硬件来实现,则存在一定的难度。正是因为原码的不足之处,使得更好的方法得以诞生。由此产生了现在常用的补码,但是在补码和原码之间存在一种反码的编码方式:

正数的反码与原码表示相同

负数的反码与原码的关系如下:负数反码的符号位与原码相同(仍用1表示),其余各位取反(0110)。

X=-1100110  [X] =11100110            [X]= 10011001

那么和原码一样,反码中零的表示也不唯一

X为纯小数时,反码表示如下:

X = 0.1011          [X] = 0.1011   [X] = 0.1011

X = - 0.1011         [X] = 1.1011   [X] = 1.0100

 

下面来介绍补码:

在此之前先来了解一下模数的概念:模式从物理意义上来讲,是某种计量器的容量。例如钟表,模数就是12,钟表计时的方式是达到12就从0开始(扔掉一个12),这在数学上是一种取模(或取余)运算(mod)” “%”是编程语言中求除法余数的运算符。例:14 % 12 = 2

 

如果此时的正确时间为6点,而你的手表指向的是8点,如何把表调准呢?有两种方法:一把表逆时针拨两个小时;二是把表顺时针拨10个小时,即

 

8-2=6

 

(8+10)%12=6

 

也就是说在此模数系统里面有

 

8-2=8+10

 

这是因为210对模数12互为补数。因此有一下结论:在模数系统中,A-BA+(-B)等价于A+[B],即

 

8-2/8+(-2)=8+10

 

我们把10叫做-2在模12下的补码。这样用补码来表示负数就可以将加减法统一成加法来运算,简化了运算的复杂程度。

 

采用补码进行运算有两个好处,一个就是刚才所说的统一加减法;二就是可以让符号位作为数值直接参加运算,而最后仍然可以得到正确的结果符号,符号位无需再单独处理。

如果有N位整数(包括一位符号位),则它的模数为2N次幂。n位计算机,设n=8,所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2^8

如果有N位纯小数,小数点前一位为符号位,则它的模数为2,(注意模数表示的是容量, 这里的模数为2  表示 -1 到1的容量

补码的特点之一就是零的表示唯一:

需要注意的是:补码的结果仍为补码,可对补码符号位不变,其余位取反加1即可得其原码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值