深入理解计算机系统 第二章 重点梗概

信息的表示

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

信息的处理

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

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

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

2. 整数乘法

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

3. 整数除法

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

4. 浮点数运算

IEEE浮点数的编码格式
V = ( − 1 ) s × ( f + 1 ) × 2 ( E − b i a s ) V = (-1)^s\times (f+1)\times 2^{(E-bias)} V=(1)s×(f+1)×2(Ebias)
其中编码位为
在这里插入图片描述
浮点数的运算书上没有细讲,可以看一下https://blog.csdn.net/m0_37972557/article/details/84594879的讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值