目录
1. 符号拓展
原码形式的符号扩展非常方便,反码和补码的符号扩展都是在原码符号扩展上分析得来的,所以尽量先处理原码形式的符号拓展,拓展好了之后再进行其它的求反码和补码操作!
2. 加法运算
对于机器来说:加法和减法实际上都是加法,只不过要加上一个辅助电路,辅助电路用来求减数相反数的补码。
3. 溢出
溢出的原因:机器字长有限! 所能表示的数据是有范围的!
方法一:不需要增加多余的位,直接根据 两个直接相加数的符号 进行判断。即 B-C 看的不是 C 而是 -C。 【B-C=B+(-C)】
+ 号两边分别表示两种溢出情况: 1 1 0 和 0 0 1
方法二:根据符号位和数据位的进位情况判断。
双符号位情况下的右移操作:
右移一位:右移之后,由于低位符号位参与了移位,所以有空位,根据负数补码的添补规则,将空位填1。
左移一位:数值位的0移到了低位符号位上,空出的位补上0。
左移两位:移动规律相同,但是发生了正溢出!(这个数值没办法用字长为8位的二进制数表示)
注意:采用双符号位进行运算的时候,实际存储是只存储一个符号位的。因为存在存储器中的数字先保证是一个正常的数字,不是溢出的情况,既然是正常数字,则两个符号位是一样的,所以只存储一位即可;
在需要运算的时候,是会把符号位的1(假设符号位为1)并行地送到用于存储符号位的两个单元中;
这个时候就实现了双符号位的运算和存储。