早教吧 育儿知识 作业答案 考试题库 百科 知识分享

计算机中补码减法的一个小问题计算机中的减法运算都是转换成加法运算的,先简单举个例子:假设一个数用4位表示,最高位为符号位,则:2-7=-5在计算机中的运算为:0010+1001//1001是-7的

题目详情
计算机中补码减法的一个小问题
计算机中的减法运算都是转换成加法运算的,先简单举个例子:
假设一个数用4位表示,最高位为符号位,则:
2-7=-5在计算机中的运算为:
0010
+1001 //1001是-7的补码
------
1011 //即为-5的补码,结果正确。
问题:如果是1-(-8)呢?计算机是把-8转换为+8来运算么?(这样不是数据溢出了么,4位表示的有符号范围为-8~+7)
计算机是怎么实现计算并判断溢出的啊?
(我知道有符号数的加法是通过同时判断符号位是否有进位和符号位是否有进位输出来判断溢出,然后书上就简单一句:减法就是转换为加法运算,判断溢出方法一样,但-8怎么转换成+8的呢,假设4位表示的情况下)
▼优质解答
答案和解析
减法采用的是增设一个符号位变成双符号位,当运算结果后的符号位的值不一样即为溢出。
-(-8)在转换过程中就会发生溢出 你的那个表示范围根本不能进行-(-8)操作
例:
一、1-(-8)运算过程:
(-8)的原码:111000
(-8)的补码:001000
1-(-8)=1+[(-8)]补=
00 0001
00 1000
————
00 1001 =9
二、-6+(-5)
11 110
11 101
------
01 011
符号位不一致,溢出
看了 计算机中补码减法的一个小问题...的网友还看了以下: