连续补番补了四天辉夜大小姐,赤坂明把漫画画蚌了是真的没想到,好气哦,继续更新
利用空档期时间学习一下计算机系统基础,以前对这些知识只停留在应试层面,今天终于能详细理解一下了。参考课程为南京大学袁春风老师的计算机系统基础MOOC,参考书籍也是袁老师的教材,这是我的听课+自查资料整理后的笔记

W2-2-1 原码和移码表示

定点数的编码表示

  • 符号化数字:定/浮点表示解决了小数点的表示问题。但是,对于一个数值数据来说,还有一个正/负号的表示问题。计算机中只能表示0和1,因此,正/负号也用0和1来表示。这种将数的符号用0和1表示的处理方式称为符号数字化。一般规定0表示正号,1表示负号。
  • 机器数:通常将数值数据在计算机内部编码表示后的数称为机器数。
  • 真值:而机器数真正的值(即现实世界中带有正负号的数)称为机器数的真值。
  • 有符号数,第一位二进制是符号位,正号用0表示,负号用1表示,数值位不变;无符号数没有符号位。

原码表示法

一个数的原码表示由符号位直接跟数值位构成,因此,也称“符号–数值”(sign andmagnitude)表示法。原码表示法中,正数和负数的编码表示仅符号位不同,数值部分完全相同。比如-1的原码(8位二进制)表示为10000001,+1为00000001

容易理解,但是:

  • 0 的表示不唯一,有正0和负0之分,故不利于程序员编程
  • 加、减运算方式不统一
  • 需额外对符号位进行处理,故不利于硬件设计
  • 特别当 a<b时,实现 a-b比较困难

从 50年代开始,整数都采用补码来表示,但浮点数的尾数用原码定点小数表示。

移码表示Excess(biased) notion

将每一个数值(原码)加上一个偏置常数(Excess/ bias)
通常,当编码位数为n时,bias取 2 n − 1 2^{n-1} 2n1 2 n − 1 − 1 2^{n-1}-1 2n11
【例】n=4, E b i a s e d = E + 2 3 E_{biased}=E+2^{3} Ebiased=E+23 b i a s = 2 3 + 1000 B bias=2^{3}+1000B bias=23+1000B
所以偏置常数是8,比如-7这个值,加上偏置常数就是1即-7(+8)~0001B,比如+7(+8)~1111B

0的移码表示唯一,当bias为 2 n − 1 2^{n-1} 2n1,移码和补码仅第一位不同。移码用来表示浮点数的(小数点的位置),用移码表示指数(阶码)便于浮点数加减运算时的对阶操作(比较大小)
【例】 1.01 × 2 − 1 + 1.11 × 2 3 1.01\times2^{-1}+1.11\times2^{3} 1.01×21+1.11×23
计算机存储数据按补码存储
补码111(-1) < 011(3)
如果按无符号数对比,左边-1反倒大了,为了简化比较,把所有的指数加偏置常数,比如偏置常数为4,则-1+4(011) < 3+4=7(111),这样去比较,很容易得到左边小于右边,所以移码主要是为了比较浮点数阶的大小。

05-06 13:53