计算机体系结构:2.数据的机器级表示

2.1 进位计数制

r进制转换成十进制: ( a n a n − 1 … a 0 . a − 1 a − 2 … a − n ) r = a n ⋅ r n + a n − 1 ⋅ r n − 1 + … a − n ⋅ r − n (a_n a_{n-1}\dots a_0.a_{-1}a_{-2}\dots a_{-n})_r=a_n\cdot r^n +a_{n-1}\cdot r^{n-1}+\dots a_{-n}\cdot r^{-n} (anan1a0.a1a2an)r=anrn+an1rn1+anrn

十进制转换成R进制:

  1. 整数部分的转换

    除基取余,上低下高。用r去除十进制数,取余数,最开始的是低位然后增长向高位

  2. 小数部分的转换

    乘基取整,上高下低。用r去乘十进制数的小数部分,取整数部分,最开始的是高位,向低位拓展。如果总得不到0,这种情况下得到的是近似值。

定点数:小数点位置约定在固定位置

  • 定点整数:小数点固定在数字的最右端
  • 定点小数:小数点固定在数字的最左端

浮点数:小数点位置约定可以浮动变化
X = ( − 1 ) s × M × R e X=(-1)^{s}\times M \times R^e X=(1)s×M×Re
其中:S取值0或1,对应符号+或-

​ M作为一个二进制定点小数,表示X的尾数

​ R为基数

​ E为指数,决定小数点的位置

2.2 实数的表示

2.2.1 定点数

定点数的几种编码表示方法

  1. 原码表示法

    一个数的原码表示由符号位直接跟数值位构成,编码规则如下:

    (1)当 X T X_T XT为正数时, X n − 1 = 0 , X i = X i ′ ( 0 ≤ i ≤ n − 2 ) X_{n-1}=0,X_i=X_i^{'}(0\le i \le n-2) Xn1=0,Xi=Xi(0in2)

    (2)当 X T X_T XT为负数时, X n − 1 = 1 , X i = X i ′ ( 0 ≤ i ≤ n − 2 ) X_{n-1}=1,X_i=X_i^{'}(0\le i\le n-2) Xn1=1,Xi=Xi(0in2)

    显然0有两种表示: [ + 0 ] 原 = 000 ⋯ 0 , [ − 0 ] 原 = 100 ⋯ 0 [+0]_原=000\cdots0,[-0]_原=100\cdots0 [+0]=0000[0]=1000

  2. 补码表示法

    模运算

    ​ 如果 A = B + K × M A=B+K\times M A=B+K×M(K为整数),则记作 A ☰ B ( m o d   M ) A☰B(mod\space M) AB(mod M),称 B , A B,A B,A为模 M M M同余。

    ​ 结论1:一个负数的补码等于模减该负数的绝对值

    ​ 结论2:对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一数负数的补码来代替。

    补码(取反+1):

    ​ 定点整数: [ X ] 补 = 2 n + X ( − 2 n − 1 ≤ X < 2 n − 1 , m o d   2 n ) [X]_补=2^n+X (-2^{n-1}\le X \lt 2^{n-1},mod \space 2^n) [X]=2n+X(2n1X<2n1,mod 2n)

    ​ 定点小数: [ X ] 补 = 2 + X ( − 1 ≤ X < 1 , m o d   2 ) [X]_补=2+X(-1\le X \lt1,mod\space 2) [X]=2+X(1X<1,mod 2)

  3. 反码表示法

    负数的补码可用“取反加1”得到,若仅取反不加1,就能得到负数的反码表示,很少被使用

  4. 移码表示法

    浮点数实际上使用两个定点数来表示的,用定点小数表示浮点数的尾数,定点整数表示浮点数的阶(即指数)。假设用来表示阶 E E E的移码的位数为 n n n,则 [ E ] 移 = 偏移常数 + E [E]_移=偏移常数+E [E]=偏移常数+E,通常偏移常数取 2 n − 1 2^{n-1} 2n1 2 n − 1 − 1 2^{n-1}-1 2n11(全0的时候),或
    [ x ] 移 = 2 n + x ( x n > x ≥ − 2 n ) , n 为整数真值位数 [x]_移=2^n+x(x^n\gt x \ge -2^n),n为整数真值位数 [x]=2n+x(xn>x2n),n为整数真值位数

机器中数据的位排列顺序

LSB(Least Bit) 表示最低有效位

MSB(Most Significant Bit) 表示最高有效位

以后均默认LSB在最右边,MSB在最左边

2.2.2浮点数

Sign bit (1bit)Exponent (float:8bits)Significand(float:23bits)

V a l u e = ( − 1 ) S ⋅ ( 1 + S i g n i f i c a n d ) ⋅ 2 e − b i a s , b i a s = 2 n − 1 − 1 ( I E E E   754 ) Value=(-1)^S\cdot (1+Significand)\cdot 2^{e-bias},bias=2^{n-1}-1(IEEE\ 754) Value=(1)S(1+Significand)2ebias,bias=2n11(IEEE 754)

特殊情况

  1. +0和-0:

    指数和尾数全为0,符号为0则为+0,为1则为-1

  2. + ∞ / − ∞ +\infty/-\infty +∞/

    指数全1,尾数全0,符号位0则为+,为1则为-

  3. 无定义数(NaN)

    指数全1,尾数不为0,则为NaN(非数)

  4. 非规格数

    ExponentSignificandObject
    00+0/-0
    0nonzeroDenorms(bias= 2 n − 1 − 1 2^{n-1}-1 2n11)
    1 ∼ 2 n − 1 − 2 1\sim 2^{n-1}-2 12n12anything implicit leading 1Norms
    2 n − 1 2^{n-1} 2n10 ± ∞ \pm \infty ±
    2 n − 1 2^{n-1} 2n1nonzeroNaN

数据类型转换:

  • i n t → f l o a t int \rightarrow float intfloat:不会溢出,精度降低
  • i n t / f l o a t → d o u b l e int/float \rightarrow double int/floatdouble:不会溢出,精度不降低
  • d o u b l e → f l o a t double\rightarrow float doublefloat:可能溢出,精度降低
  • f l o a t / d o u b l e → i n t float/double\rightarrow int float/doubleint:向0方向截断,可能溢出

2.3 非数值数据

2.3.1 非数值数据的表示

  1. 逻辑数据

    表示:用一位表示。1真0假,N位二进制数表示N个逻辑数据

    运算:按位进行,与、或、左移、右移

    识别:形式上与数值数据无区别,机器靠指令识别

    位串:用来表示若干个状态位或控制位(OS中使用较多)

  2. 西文:ASCII码

  3. 汉字:

    编码形式

    • 输入码:对汉字用相应按键进行编码表示,用于输入
    • 内码:用于在系统中进行存储、查找、传送等处理
    • 字模点阵或轮廓描述:用于显示/打印

2.3.2 数据的宽度

比特是计算机中处理、存储、传输信息的最小单位

二进制信息的计量单位是"字节"(byte),也称"位组",8位,1字是4位。

2.3.3 数据的存储排列

大端方式(Big Endian):高位(MSB)所在的地址是数的地址

小端方式(Little Endian):低位(LSB)所在的地址是数的地址

字节的反,字节内的两个比特默认从高到低。

假定小端机器中指令:mov AX, 0x12345(BX)

其中操作码mov为40H,寄存器AX和BX的编号分别为0001B,0010B,立即数占32位。则:

小端401245 23 01 00
大端401200 01 23 45

只需要考虑指令中立即数的顺序。

对齐(Alignment)

按边界对齐(假定存储字的宽度位32位,按字节编址)

  • 字地址:4的倍数(低两位为0)
  • 半字地址:2的倍数(低位为0)
  • 字节地址:任意
  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值