二进制中怎么判断是否溢出求解顺便能否再给两个例子
主要这里介绍两种方法
第一种,单一符号位时,只有相同符号相加时(减可以转化为补码再相加),才有可能溢出。所以假设两个数为A,B,结果为S,A的符号位As,B的符号位Bs,结果的符号位Ss,则判断他们是否溢出是
V= A_sB_s\bar{S_s} + \bar{A_s}\bar{B_s}S_s
V=0,则表示无溢出,V=1则表示溢出
例子:
4为的两个数5+6=11二进制:0101+0110=1011
V=0&0&0+1&1&1=1溢出
两个负数的补码相加这里主要就是结果的符号位与两个相加的数的符号位不同
第二种,采用双符号位即最高的两位是符号位。例如5位的二进制5:00101,-5:11011
运算结果的两个符号位S_{s1}S_{s2}的各种情况:
1S_{s1}S_{s2}=00:表示运算结果为正数,没有溢出
2S_{s1}S_{s2}=01:表示结果为正数,溢出
3S_{s1}S_{s2}=10:表示结果为负数,溢出
4S_{s1}S_{s2}=11:表示结果为负数,没有溢出
例子(还是五位二进制,两个符号位,这具体表示的是数的是后面3位):
1+2=3:00001+00010=00011(符号位是00,无溢出)
5+6=11:00101+00110=01011(符号位是01,正数溢出)
-4-6=-10:11100+11010=10110(符号位是10,负数溢出)
-3-2=-5:11101+11110=11011(符号位是11,无溢出)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论