8位寄存器中无符号与有符号二进制数相加的溢出判断及实例疑问
8位寄存器整数加法的溢出判断及实例解答
无符号整数溢出判断方法
- 8位无符号整数的取值范围是
0~255,当两数之和大于255时就会产生溢出 - 本质可通过判断加法运算是否产生第9位进位来确定(8位寄存器仅能保留低8位)
有符号补码整数溢出判断方法
8位有符号补码的取值范围是-128~127,核心判断规则如下:
- 两个正数相加,结果符号位变为1(即结果为负数),则溢出
- 两个负数相加,结果符号位变为0(即结果为正数),则溢出
- 一正一负相加,永远不会出现溢出
给定计算的具体分析
计算式:0b01001010 + 0b01001010
- 先转换为十进制:
0b01001010对应数值74,无论作为无符号数还是有符号补码数(符号位为0,是正数),值均为74 - 相加结果为
0b10010100,分别判断:- 无符号整数:结果转十进制为148,在
0~255范围内,且74+74=148<256,未产生第9位进位,因此无溢出 - 有符号补码整数:结果的符号位为1(表示负数),两个正数相加得到负数,符合正数相加溢出的规则,因此存在溢出
- 无符号整数:结果转十进制为148,在
内容的提问来源于stack exchange,提问作者Expl1citKen
相关产品推荐
相关产品推荐

