求问二进制的补码和反码问题。
在计算机系统中,数值,一律采用补码表示和存储。
在计算机中,原码反码,都是不存在的。
因此,原码反码,根本就没有任何用处。
补码,实际上,它就是一个“代替负数”的正数。
使用了补码(正数)之后,在计算机中,就没有负数了。
同时,也就没有了减法运算。
因此,不但能简化算法,而且顺便就能简化计算机的硬件。
-----------------------
正数,怎么能代替负数呢?
你看看两位十进制数(0~99)吧:
25 - 1 = 24
25 + 99 = (一百) 24
只要你舍弃进位,只保留两位,+99 就能代替-1。
+99,这就是-1 的补数。
对应关系:补数=负数+计数周期(10^2 = 100)。
-----------------------
计算机中,使用二进制,补数,也就改称为:补码。
8 位 2 进制数,计数周期,是:2^8 = 256。
-1 的补码,就是:-1 + 256 = 255 = 1111 1111 (二进制)。
对吗? 分别用十进制、二进制,计算一下试试:
3 = 0000 0011
-1 = + 1111 1111
---------------
2 = (1) 0000 0010
只要舍弃进位,这两种算法,结果,就是相同的。
同理,-2 补码就是:254 = 1111 1110。
。。。
零和正数,必须直接参加运算。
零和正数,不可变换,也就不存在“正数的补码。
-----------------------
补码的来源和意义,就是这些。
你如果从“原码反码符号位”开始学补码,肯定是“学不懂”的。
老外,脑子不好用,才编造了那些垃圾!
其实,那些都是无稽之谈,随口乱讲的,并无任何理论依据。
若-10011是移码,那它的补码是10011,反码是10010.(反码是在原码的取反,而补码是在反码的个位上加1,移码是补码的相反数。)
不知道这样解释你明白嘛!!
0110。
负数的补码求解方法是它的原码除符号位外逐位取反再末位加1。
原码:1 100
0110;
反码:1 011
1001;
补码:1 011
1010。
--可是为什么书上给的答案是
111
1010
!
书,也有错的时候。