01 数字系统与计算机中的数据存储

1 位置化数字系统

位置化数字系统即在数字中符号所占据的位置决定了其表示的值。数字表示如下: ± ( S k − 1 ⋅ ⋅ ⋅ S 2 S 1 S 0 . S − 1 S − 2 ⋅ ⋅ ⋅ S − l ) b = ± S k − 1 × b k − 1 ⋅ ⋅ ⋅ S 0 × b 0 . S − 1 × b − 1 + ⋅ ⋅ ⋅ + S − l × b − l ±(S_{k-1}···S_2S_1S_0.S_{-1}S_{-2}···S_{-l})_{b}=±S_{k-1}×b^{k-1}···S_0×b^0.S_{-1}×b^{-1}+···+S_{-l}×b^{-l} ±(Sk1S2S1S0.S1S2Sl)b=±Sk1×bk1S0×b0.S1×b1++Sl×bl

2 十进制、二进制、八进制和十六进制的位置化数字系统表示及其相互之间的转换

2.1 十进制、二进制、八进制和十六进制的位置化数字系统表示

很明显,十进制的基数 b = 10 b=10 b=10,二进制的基数 b = 2 b=2 b=2等等,那么这4种进制的位置化数字系统描述如下:
± ( S k − 1 ⋅ ⋅ ⋅ S 2 S 1 S 0 . S − 1 S − 2 ⋅ ⋅ ⋅ S − l ) 10 ±(S_{k-1}···S_2S_1S_0.S_{-1}S_{-2}···S_{-l})_{10} ±(Sk1S2S1S0.S1S2Sl)10
± ( S k − 1 ⋅ ⋅ ⋅ S 2 S 1 S 0 . S − 1 S − 2 ⋅ ⋅ ⋅ S − l ) 2 ±(S_{k-1}···S_2S_1S_0.S_{-1}S_{-2}···S_{-l})_{2} ±(Sk1S2S1S0.S1S2Sl)2
± ( S k − 1 ⋅ ⋅ ⋅ S 2 S 1 S 0 . S − 1 S − 2 ⋅ ⋅ ⋅ S − l ) 8 ±(S_{k-1}···S_2S_1S_0.S_{-1}S_{-2}···S_{-l})_{8} ±(Sk1S2S1S0.S1S2Sl)8
± ( S k − 1 ⋅ ⋅ ⋅ S 2 S 1 S 0 . S − 1 S − 2 ⋅ ⋅ ⋅ S − l ) 16 ±(S_{k-1}···S_2S_1S_0.S_{-1}S_{-2}···S_{-l})_{16} ±(Sk1S2S1S0.S1S2Sl)16
举个例子,10进制表示实数+24.13如下:

位置量 10^1 10^0 10^-1 10^-2
数字   2    4	 1	   32*10^1+4*10^0+1*10^-1+3*10^-2 = 24.13

2.2 其它进制转十进制

数码乘以其在源系统中的位置并求和便得到十进制中的数。
在这里插入图片描述

  • 二进制 ( 110.11 ) 2 (110.11)_2 (110.11)2转换为十进制
二进制	1	1	0	.	1	1
位置量	2^2 2^1 2^0		2^-1 2^-2
十进制	1*2^2+1*2^1+0*2^0+1*2^-1+1*2^-2=6.75
  • 十六进制 ( 1 A . 23 ) 16 (1A.23)_{16} (1A.23)16转换为十进制
十六进制	1	A	.	2	3
位置量	16^1 16^0   16^-1 16^-2
十进制	1*16^1+10*16^0+2*16^-1+3*16^-2=26.137

2.3 十进制转其它进制

十进制数转其它进制数需要两个过程:一是用于整数部分(连除法),二是用于小数部分(连乘法)。

  • 十进制数35转为二进制
十进制	35	17	8	4	2	1	0
二进制	1	1	0	0	0	1	=	110001
  • 十进制0.634转换为八进制,精确到小数4位
十进制	0.634	0.072	0.576	0.608	0.864
八进制	5		0		4		4	=	.5044
  • 十进制数178.6转换为十六进制,且精确到1位小数
十进制	0	11	178		0.6		0.6
十六进制		B	2	.	9

2.4 其余进制之间的转换

  • 二进制转十六进制
    在这里插入图片描述
  • 二进制转八进制
    在这里插入图片描述
  • 八进制转十六进制
    在这里插入图片描述

3 计算机存储整数

整数是完整的数字,没有小数部分。整数通常使用定点表示法存储在内存中,定点表示法如下:
在这里插入图片描述

3.1 无符号表示法

无符号整数就是没有符号的整数,其范围介于0到 2 n − 1 2^n-1 2n1之间(n表示计算机中分配用于表示无符号整数的二进制位数)。

  • 将整数变成二进制
  • 如果二进制位数不足n位,则在二进制整数的左边补0,使它的总位数为n位。如果位数大于n,会导致溢出的情况。

例如,7存储在8位存储单元中: 7 → 111 → 00000111 7→111→00000111 711100000111。258存储在16位存储单元中: 258 → 100000010 → 0000000100000010 258→100000010→0000000100000010 2581000000100000000100000010。如果整数大小超过存储单元的位所能表达的极限,会发生溢出的情形,例如20存储在4位的存储单元中:
在这里插入图片描述

3.2 符号加绝对值表示法

在符号加绝对值格式表示法中,最左边用于定义整数的符号,0表示正数,1表示负整数。剩下的n-1位用于表示数字的绝对值(因此,最大值仅为无符号最大数的一半)。4位的符号加绝对值的表示法如下(注意有两个0:+0和-0):
在这里插入图片描述
例如,+28存储在8位存储单元中: 28 → 0011100 → 00011100 28→0011100→00011100 28001110000011100。-28存储在8位存储单元中: − 28 → 0011100 → 10011100 -28→0011100→10011100 28001110010011100。如果整数大小超过存储单元的位所能表达的极限,会发生溢出的情形:
在这里插入图片描述

3.3 二进制补码表示法

目前计算机都使用二进制补码表示法来存储n位存储单元中的有符号整数。在二进制补码表示法中,最左边用于定义整数的符号,0表示正数,1表示负整数。二进制补码表示法步骤如下:

  • 将整数变成n位二进制
  • 如果整数是正数或零,原样存储,如果是负数,计算机取其补码存储。补码的计算:取反码+1。

例如,28存储在8位存储单元中: 28 → 0011100 → 00011100 28→0011100→00011100 28001110000011100。-28存储在8位存储单元中: − 28 → 0011100 → 11100100 -28→0011100→11100100 28001110011100100。同样会出现溢出的情形:
在这里插入图片描述

4 计算机存储实数

4.1 浮点表示法

实数是带有整数部分和小数部分的数字。带有很大的整数部分或很小的小数部分的实数不应该用定点表示法存储,而应该采用浮点表示法,在浮点表示法中数字由3部分组成:
在这里插入图片描述
例如,-0.0000000000000232可以表示为 − 2.3 2 − 14 -2.32^{-14} 2.3214

4.2 规范化

为了使表示法的固定部分统一,科学计数法(十进制)和浮点表示法(二进制)在小数点左边使用了唯一的非零数码,称为规范化。

十进制	±	d.xxxxxxxxxxx	注意:d是19,x为09
二进制	±	1.yyyyyyyyyyy	注意:y只能为01

4.3 符号、指数和尾数

在一个二进制数规范化之后,只需要存储该数的3部分:符号、指数和尾数(小数点右边的数)。
在这里插入图片描述
注意:小数点和定点部分左边的位1没有存储,是隐含的。

  • 符号:用一个二进制位存储(0或1)
  • 指数:小数点移动的位数,可正可负。采用余码表示法存储。
  • 尾数:尾数是小数点右边的二进制数。尾数是作为无符号整数存储的。

指数是有符号的数,尽管可以采用二进制补码表示法存储,但是被一种余码表示法所替代。在余码系统中,正的和负的整数都可以作为无符号数存储。为了表示正的或负的整数,将正整数(偏移量 2 m − 1 − 1 2^{m-1}-1 2m11)添加到每一个数字中。优点在于所有的整数都是整数。下面展示m=4的情形:
在这里插入图片描述

4.4 IEEE标准

IEEE定义了几种存储浮点数的标准。常用的单精度和双精度标准如下:
在这里插入图片描述
在这里插入图片描述
注:单精度有时被称为余127码,因为其偏移量为127。双精度有时被称为余1023码,因为其偏移量为1023。IEEE标准浮点数的存储步骤如下:

  • 在S中存储符号
  • 将数字转换为二进制
  • 规范化
  • 找到S(指数)和M(尾数)
  • 连接S、E和M

例如,十进制数5.75的单精度表示法如下:

1S = 0
25.75 = 101.11
3101.11 = 1.0111 × 2^2
4E = 2 + 127 = 129 (偏移量为127)
5M = 01110000000000000000000
表示如下:
0	10000001	01110000000000000000000
S	   E				  M
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是聪聪黄吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值