8位2进制原码反码补码表示法:第一位是符号位,正数为0负数为1
-67的原码是11000011,换成反码符号位不变,其他各位依次求反:
10111100,换成补码只在反码基础上末位加1:
10111101。
55的原码00110111,正数原码反码补码相同。
补码实现55-67:00110111
+10111101
---------------------------
11110100
把这个补码末位减一,符号位不变各位取反得到结果的原码表示:10001100,
转换成十进制刚好等于-12,验证了结果11110100是正确的。
假定某台计算机的机器数占8位,使用补码实现这两个数的加法运算:55 - 67。
------------------
计算:-67 + 55=?
-67 = -1000011
+55 = +0110111
换成八位补码,再相加:
[-67]补 =1011 1101
+ [+55]补 =0011 0111
---------------
1111 0100 = [-12]补
即:-67 + 55 = -12。
源码就是程序的源代码
这个没法举例
不过我猜你想问的是原码...原码就是指令转换成原始的机器码
反码是2进制机器码的一种操作
比如求00110011的反码就是11001100
补码就是计算机里存储指令都用补码
举例就是9的原码是00001001
反码是11110110
补码是00001001
(如果是-9)那么符号位变成1
就是10001001
带符号数,有三种表示方法,即:原码、反码和补码。
但是,在计算机系统中,数值一律用补码来表示和存储。
所以,在计算机系统中,原码和反码,都是不存在的。
-------------------
对于八位计算机:
数字 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 的补码
舍弃进位,只保留八位,结果完全正确。
-------------------
原码和反码,都没有简化硬件的功能。
求某一个数值的补码,也不需要原码和反码。
所以,原码和反码,都没有任何用处。
在计算机中,原码和反码,也不存在。
那么,原码和反码,都是多少? 管它呢!