源码反码与补码

假定某台计算机的机器数占8位,请写出 -67和55的原码、反码和补码表示,并使用补码实现这两个数的加法运算,即55-67。

8位2进制原码反码补码表示法:第一位是符号位,正数为0负数为1
-67的原码是11000011,换成反码符号位不变,其他各位依次求反:
10111100,换成补码只在反码基础上末位加1:
10111101。

55的原码00110111,正数原码反码补码相同。

补码实现55-67:00110111
+10111101
---------------------------
11110100

把这个补码末位减一,符号位不变各位取反得到结果的原码表示:10001100,
转换成十进制刚好等于-12,验证了结果11110100是正确的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-01-11

假定某台计算机的机器数占8位,使用补码实现这两个数的加法运算:55 - 67。

------------------

计算:-67 + 55=?

-67 = -1000011

+55 = +0110111

换成八位补码,再相加:

    [-67]补 =1011 1101

  + [+55]补 =0011 0111

 ---------------

         1111 0100 = [-12]补

即:-67 + 55 = -12。

第2个回答  2019-04-27
源码就是程序的源代码
这个没法举例
不过我猜你想问的是原码...原码就是指令转换成原始的机器码
反码是2进制机器码的一种操作
比如求00110011的反码就是11001100
补码就是计算机里存储指令都用补码
举例就是9的原码是00001001
反码是11110110
补码是00001001
(如果是-9)那么符号位变成1
就是10001001
第3个回答  2022-01-29

带符号数,有三种表示方法,即:原码、反码和补码。

但是,在计算机系统中,数值一律用补码来表示和存储。

所以,在计算机系统中,原码和反码,都是不存在的。

-------------------

对于八位计算机:

数字 0 的存放形式是:0000 0000。

数字+1,就加上一:0000 0001。

数字+2,就再加一:0000 0010。

数字+3,依此类推:0000 0011。

。。。正数,你就依次加一。。。

+55,存放就是:0011 0111。

=============

负数,就是从零,依次减一。

数字-1,也就是:0000 0000-1,

 保留八个位,可得:1111 1111 = 255(十进制)。

数字-2,就再减一:1111 1110 = 254。

数字-3,继续减一:1111 1101 = 253。

。。。继续依次减一。。。

-67,就减到了:1011 1101。

以上,是数值在计算机中的存放形式,即:补码。

-------------------

八位补码的计算公式:

  负数的补码: 2^8 - 该负数

  (如果需要二进制,你就再转换一下。)

  正数,不需要变换,也不可以变换。

  所以,正数,不存在补码。

补码,完全是由二进制加一减一自然形成的,和原码反码没有任何关系。

-------------------

计算: 55-67 = -12。

在计算机中,要用补码代替负数,把减法转换为加法运算。

计算过程如下:

       55=0011 0111

     -67 补码=1011 1101

--相加-------------

   得:  (0)   1111 0100 = -12 的补码

舍弃进位,只保留八位,结果完全正确。

-------------------

原码和反码,都没有简化硬件的功能。

求某一个数值的补码,也不需要原码和反码。

所以,原码和反码,都没有任何用处。

在计算机中,原码和反码,也不存在。

那么,原码和反码,都是多少? 管它呢!


相似回答