信息的表示
关于位,数据类型,无符号和有符号编码及其转换 这部分比较基础,不在此赘述,实践中会加深理解。这里再加深一下补码编码的定义的印象
信息的处理
1. 整数加法(减法就是有符号数的加法)
无符号加法较为简单,溢出模就可以了。
有符号加法比较复杂
-
这种情况是易于理解的,属于正常的情况,但是负数加法的情况是可能会理解偏差。
假设两个负数的补码相加值是满足上述关系的,但是在二进制补码形式下是溢出一位的,例如
但是这种情况下溢出的一位实际上是符号位扩展,截断是不影响的。 - 其他正溢出和负溢出的情形比较好理解。
2. 整数乘法
不考虑补码乘法器的实现的话是比较好理解的,还是位截断,补码解码的方式。
因为乘法器的底层实现比较复杂,所以会消耗较多的时钟周期,编译器可能会通过移位和加法的组合来完成常数乘法
3. 整数除法
这里主要讨论了除以2的幂可以采用移位的方式进行加速,但是补码运算需要考虑舍入的方向,
这里需要明确
算术右移:最高位填充符号位。正数填充0,负数填充1(有符号数)
逻辑右移:最高位填充(无符号数)
左移都是补0
4. 浮点数运算
IEEE浮点数的编码格式
其中编码位为
浮点数的运算书上没有细讲,可以看一下https://blog.csdn.net/m0_37972557/article/details/84594879的讲解