计算机组成原理——数据的表示和运算(上)

166

这是我参与更文挑战的第9天,活动详情查看:更文挑战

十进制转换为任意进制数

  • 对整数 : 除基取余法
  • 对小数: 乘基取整法

image-20200710213711456.png

BCD码

  • 8421码 会有废码
  • 余3码 8421 + 3
  • 2421码 大于等于5的4位二进制数中最高位为1,小于5最高位为0 ,按位取反得到9的补数

字节码

每个字节存储一个字符,小端(低\rightarrow高)、大端

校验码

  1. 奇偶校验码

    • 做法:在原编码上加一个校验位
    • 码距:2 //码距是两个编码对应比特取值不同的比特数称为这两个码字的海明距离。
    • 功能:可以检测出奇数位错误

    不能确定出错的位置

    通过校验位使整个校验码中“1”的个数位奇数或偶数,奇数则成为奇数校验。

  2. 海明校验码:

  3. 循环冗余校验码

    • 做法:在K位信息码再拼接R位校验码,整个编码长度为N位。又称(N,K)码
    • 通过信息码与多项式相除**【模2除法,直接异或,不进位不借位】**取余数,作为校验码R,并在接收端用CRC码除以多项式,若能整除,则没问题
    • 若不能整除,则余数是多少,哪位出错。

数据存储方式

小端模式:先处理低位字节,大端模式:先处理高位字节

struct存储边界对齐

  • 每个成员按其类型对齐,struct长度必须是成员中最大对齐值的整数倍

定点数的运算

原码补码反码移码

定点表示即约定机器数中的小数点位置是固定不变的

  • 原码:机器数的最高位表示该数的符号,其余各位表示书的绝对值
  • 补码:正数不变,负数取反加1(为了可以正负数直接相加)
  • 反码
  • 移码:数字加偏置,一般为2^n^
    • 移码中零的表示唯一
    • 一个真值的移码和补码仅差一个符号位,x符号位取反得xx_补 符号位取反得 x_移
    • 移码全为0时,对应真值最小值-2^n^ 2^n^-1
    • 保持了大小规律

定点数得移位运算

算术移位

image-20200725193107545.png 逻辑移位

用于无符号数,均添0

循环移位

image-20200801021233367.png 有什么用?适合数据的低字节高字节互相转换

符号扩展

正数全是0,负数原码反码1,补码整数1小数0

除了补码的小数是0剩下负数全是1

溢出概念和判别方法

无论是单符号位还是双符号位,都需要溢出判断电路,即异或门

定点数乘除法:主要掌握补码乘除原理和特点,对于运算过程不必要过分纠结

(1).定点数补码乘法运算:掌握Booth算法,可以按照溢出来理解,当出现01表示正溢出需要+[x]补,出现10表示负溢出需要+[-x]补;

v2-010782eec5a11ebe7637b14ba182bb0b_1440w.jpg

img

img

(2)定点数补码除法运算:余数和除数同号,上商"1";余数和除数异号,上商"0";最后一步商恒置"1"

v2-6042e26865be878ef0379d23cde00790_1440w.jpg

v2-6042e26865be878ef0379d23cde00790_1440w.jpg