二进制补码 - 方法分析
Two's Compliment - Method Analysis
我有一个关于双恭维的方法的问题:这两种方法哪个是正确的,我如何反驳不正确的?
开始示例任务:将负二进制数 -20 转换为二进制补码负二进制数(以 8 位二进制形式保存)。
方法一:
- 求数的正二进制值,
- 翻转二进制值的位
- 翻转后的数字加一
示例:对于 -20..
20的二进制是00010100,翻转后的位是11101011,翻转后的位加1就是11101100。
所以,11101100 是 -20 的补码。
方法二:
- 正值减一
- 求出该十进制数的正二进制数
- 翻转二进制数的位
示例:对于 -20.. 20 是正十进制数,因此 20-1 = 19。19 在二进制中是 00010011。翻转位:11101100。11101100 在二进制补码中是 -20。
两种方法都有效。
给定 n 位数 A=an-1,an-2...a0,C2 是满足 A+C2(A)=2^n
的数
如果/A是A的位补,很容易证明A+/A=11..11=2^n-1 => C2=/A+1证明了第一种方法
第二种方法规定 C2(A)=/(A-1)。如果我们计算
/(A-1) + (A-1)=11...11=2^n-1, 可以看出 /(A-1)+A=2^n 证明第二种方法.
我有一个关于双恭维的方法的问题:这两种方法哪个是正确的,我如何反驳不正确的?
开始示例任务:将负二进制数 -20 转换为二进制补码负二进制数(以 8 位二进制形式保存)。
方法一:
- 求数的正二进制值,
- 翻转二进制值的位
- 翻转后的数字加一
示例:对于 -20.. 20的二进制是00010100,翻转后的位是11101011,翻转后的位加1就是11101100。 所以,11101100 是 -20 的补码。
方法二:
- 正值减一
- 求出该十进制数的正二进制数
- 翻转二进制数的位
示例:对于 -20.. 20 是正十进制数,因此 20-1 = 19。19 在二进制中是 00010011。翻转位:11101100。11101100 在二进制补码中是 -20。
两种方法都有效。
给定 n 位数 A=an-1,an-2...a0,C2 是满足 A+C2(A)=2^n
的数如果/A是A的位补,很容易证明A+/A=11..11=2^n-1 => C2=/A+1证明了第一种方法
第二种方法规定 C2(A)=/(A-1)。如果我们计算 /(A-1) + (A-1)=11...11=2^n-1, 可以看出 /(A-1)+A=2^n 证明第二种方法.