下面的这个介绍的就是我们的补码的快速的计算方法:
1)普通的计算的方法:源码符号位不变,其他位按位取反,然后+1,这是最普通的,也是最朴素的计算的方法,初学者进行这个组成原理的这个部分的内容的学习的时候,通常遇到的都是这个样子的方法;
2)快速的计算的方法:下面的这个黑色的笔写的这个部分,我们直接从后往前看,找到第一个1,第一个1后面的内容不变,其他的前面的内容全部取反即可,这个就是我们的源码–>补码的快速的计算方法;
下面的这个解释一下我们的补码的移位运算(算术移位)的相关的规则把,就是我们的源码左右移的时候是补上0,对于这个反码我们是补上1,但是我们的补码的规则综合了两者,就是左移的时候是补上1,右移的时候是补上0;
原因分析:通过下面的这个图可以直观的看到我们的这个补码的前面是和我们的反码保持一致的,而且这个补码的后半部分和我们的源码保持一致
逻辑移位:无论是什么数字,都是补上0,无论是左移还是右移;
下面展示的就是两个不同的情况: 1)两个正数经过运算之后成为了一个负数; 2)两个小数(正数)运算之后成为负数;
其实两个例子的本质是一样的,就是超出了范围,导致了这个溢出的情况;
下面的这个是关于我们的溢出的具体在我们的这个数轴上面的不同的分类的情况:
在不同的区域,对应着不同的溢出的分类,负上溢,正上溢之类的;
一位符号位+逻辑表达式进行综合的判断:
采用符号位和进位进行判断,通过对于我们的符号位和进位是0还是1,表示我们的这个对应的不同的溢出的类型;
使用双符号位的方法,记录两个符号位的数据,进行异或运算,判断我们的这个结果是不是溢出的情况;
分为正数和负数的情况,其中里面有细分成为这个整数和小数的情况:
1.对于正数,这个扩展的规则是统一的;
2.但是对于负数,我们需要分为不同的码制进行区分和辨别处理;
逻辑移位:一定是添加0;
算术移位:符号位不需要变动,也就是1;
下面的这个情况:首先可以知道这个是补码之间的运算(如果是源码,肯定是不会让我们去直接进行加法运算的)
列竖式相加,然后进行二进制转换为十进制即可;