信息的表示

关于位,数据类型,无符号和有符号编码及其转换 这部分比较基础,不在此赘述,实践中会加深理解。这里再加深一下补码编码的定义的印象
B2Tw(x)=xw12w1+i=0w2xi2iB2T_w(x)=-x_{w-1}*2^{w-1}+\sum_{i=0}^{w-2}x_i2^i

信息的处理

1. 整数加法(减法就是有符号数的加法)

无符号加法较为简单,溢出模2w2^w就可以了。
有符号加法比较复杂

  • 2w1<=x+y<2w1 -2^{w-1} <=x+y < 2^{w-1}
    这种情况是易于理解的,属于正常的情况,但是负数加法的情况是可能会理解偏差。
    假设两个负数的补码相加值是满足上述关系的,但是在二进制补码形式下是溢出一位的,例如
    x=1111y=1011x+y=11010x = 1111 \\ y=1011 \\ x+y = 11010
    但是这种情况下溢出的一位实际上是符号位扩展,截断是不影响的。
  • 其他正溢出和负溢出的情形比较好理解。

2. 整数乘法

不考虑补码乘法器的实现的话是比较好理解的,还是位截断,补码解码的方式。
因为乘法器的底层实现比较复杂,所以会消耗较多的时钟周期,编译器可能会通过移位和加法的组合来完成常数乘法

3. 整数除法

这里主要讨论了除以2的幂可以采用移位的方式进行加速,但是补码运算需要考虑舍入的方向,
这里需要明确
算术右移:最高位填充符号位。正数填充0,负数填充1(有符号数)
逻辑右移:最高位填充(无符号数)
左移都是补0

4. 浮点数运算

IEEE浮点数的编码格式
V=(1)s×(f+1)×2(Ebias)V = (-1)^s\times (f+1)\times 2^{(E-bias)}
其中编码位为
深入理解计算机系统 第二章 重点梗概
浮点数的运算书上没有细讲,可以看一下https://blog.csdn.net/m0_37972557/article/details/84594879的讲解

相关文章:

  • 2021-08-16
  • 2021-09-07
  • 2021-10-10
  • 2021-06-25
  • 2021-11-17
  • 2021-10-03
  • 2021-10-11
猜你喜欢
  • 2021-09-19
  • 2021-11-29
  • 2021-10-08
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2021-11-17
相关资源
相似解决方案