概述
目录
无符号数的运算(溢出看CF)
有符号数运算(溢出看OF)(都是补码进行运算,因为补码的符号位可以直接参与运算一套电路就ok)
例题
第一题
第二题
无符号数的运算(溢出看CF)
(1)两个无符号数相加,和为正数,当和超过其位数所允许的范围时,向更高位进位,用CF(进位标志位)表示。
当CF为1的时候,这个数就溢出了
我们知道8位全1,最大可以表示255
(2)两个无符号数相减(借1当2)被减数大于或等于减数,无借位,结果为正,被减数小于减数,有借位,结果为负
对于无符号数进行减法运算,其结果的符号用进位来判断:CF=0(无借位)结果为正;CF=1(有借位)结果为负
有符号数运算(溢出看OF)(都是补码进行运算,因为补码的符号位可以直接参与运算一套电路就ok)
8位补码表示的范围是-128到+127,不在这个范围就是溢出
两个整数相加得到负数溢出,两个负数相加得到整数溢出
一个正数+一个负数是一定不会溢出的。
溢出会让OF(Overflow Flag)=1
将多位二进制拆成多部分运算时,数的低位部分均为无符号数,只有高位才为符号数
溢出不同于补码运算中的进位或借位丢失
没有超过-128,切两个负数相加还是负数不溢出,OF=0,但是有进位CF=1
其实判溢出不是看结果,看最高位和次高位就可以
概括一下这个图
OF=最高位的进位和次高位的进位做异或(相同出零,不同出1)就是OF的值
有符号判溢出说人话就是看看,最高位的进位和次高位的进位是不是相同,不相同就是溢出了OF=1
例题
第一题
这种题要是没给出,10进制的数,就要用 [x+y]补 =x补+y补 [x-y]补=x补+-y补
知道y的补码,-y的补码为全部取反+1,包括符号位。要区分开已知原码求补码
但是它给出了就直接加完在求补码 这个题也就是变成了求123的补码,和求-125的补码
答案:01111011 10000011
第二题
答案:B
无符号溢出看CF
最后
以上就是心灵美飞鸟为你收集整理的无符号、有符号数运算判溢出的全部内容,希望文章能够帮你解决无符号、有符号数运算判溢出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复