1.无符号整数的表示和运算
1.1对于无符号二进制整数来说,所有二进制位都是数值位,没有符号位,第i位的位权为 2�−1 (由等比数列求和公式可推出)
1.2对于计算机来说,指定的机器字长为多少位计算机就只能同时处理多少位的二进制数,超过的部分会被截断舍去,不足的部分会以0补齐。
1.3无符号整数的减法需要重点记住,被减数不变,减数全部按位取反,末位加1.这样就实现了减法变加法。
如题:以二进制计算 99+9 和 99−9 .(8bit寄存器)
首先将99和9分别转化为二进制数为:01100011,00001001。相加就直接与十进制加法一样,最终得到结果为01101100,做减法就按照减法变加法的规则,将00001001按位取反得到11110110,然后末位加1为11110111然后相加得到101011010,发现相加得到的bit位为9位,那么直接从最高位开始舍去,得到答案01011010.
2.带符号的整数表示和运算
1.如果用原码则符号位不能参与运算,所以才发明补码
2.负数转补码过程,符号位不变,数值位按位取反,末位加1
3.对于负数原码与补码相互快速转换的方法:从右往左找到第一个1,这个1左边所有的数值位按位取反。 例如: 则
4.补码的减法运算,同无符号的整数减法运算一样将减法变加法 。
3.原码反码补码的特性对比
记住一下这一点补码特殊的特殊性就好了:
这一个知识点的一个考法就是判断两个数相加后是否会溢出,比如用原码表示-64+(-64)得到结果为-128,则会溢出,而如果用原码表示则不会溢出。
4. 带符号整数的移码
补码与移码的转换:
习题
答案:
5.定点小数
定点小数与定点整数没有什么很大的差别,在机器中就是小数点的隐含位置不一样 。定点小数的加减与定点整数一样,先转换为补码再做相加减。
补充:奇偶校 验码
奇校验码就是你在校验位添加的0或者1要使得编码中所有的1的个数为奇数,偶校验码就是在校验位上添加1或者0使得编码中所有的1的个数为偶数。对于例题中的奇校验码为11001101,01010111.偶校验码为01001101,11010111.
求偶校验位:
在计算机硬件上我们如何求偶校验位上到底是0还是1呢?方法如下:对信息位做异或
异或得到的是什么,偶校验位的校验码就是什么。
进行偶校验:
一台计算机对另外一台计算机发送信息后该如何判断是否有错误呢?方法:对所有位进行异或,若结果为1则说明出错。
6.算术逻辑单元
巩固一下这两个逻辑运算的记忆
7.并行进位加法器
8.补码加减运算器
9. 加减运算和溢出的判断
原,补码的加减
对于这两种方法,我认为只要着重掌握补码的加减就行了
溢出的判断
对于这种方法,我们需要在计算过程中得到两个因数的符号位和结果的符号位。
对于这种方法,我们需要得到最高位的进位(即最高位如果往下一位进了一个位则最高位进位为1),符号位的进位(如果往符号位的下一位进了一位则符号位进位为1)。
这种方法就是在两数做运算时把符号位复制一位,计算完毕后检查符号位中的两位数是否想等,如果不相等则发生了溢出(可以判断出发生上溢还是下溢)。
补充一个概念:
模4即取权值为4之前的所有位数,如,所以取位权为2,1的位数。
符号扩展
标致位的生成
OF(OverflowFlag)溢出标致(有符号)
溢出时为1否则为0,但是要注意OF位只对有符号加减运算有意义。它的计算方法如下:
硬件中的计算方法为最高位产生的进位与符号位产生的进位做异或。
SF(Sign Flag)符号标致(有符号)
计算的结果为负时置1否则置0,计算方法为:SF=符号位的本位和,即符号位是多少,SF就是多少。
ZF(Zero Flag)零标致
运算结果为0时置1,否则置0,计算方法:只有所有n个bit位全为0时,ZF=1
CF(Carry Flag) 进位标致(无符号)
进位时置1,否则置0,计算方法:
CF=1时表示发生了溢出
习题
请你根据硬件的判断方法判断X+Y和X-Y是否发生了溢出。
解答
对于第一个题目,X+Y我们可以得到OF=0,所以未发生溢出,X-Y我们可以得到OF=1,发生了溢出。
对于第二个题目,X+Y我们可以得到CF=0,未发生溢出,X-Y我们可以得到CF=0,未发生了溢出。