为什么数在内存中要以补码表示[ZZ]

保证0的唯一性。  
让加减可以统一处理。  
举例:10在内存的中表示(以8位二进制为例)  
补码:00001010  就是这个数转成二进制后的本身。  
-10在内存中的表示:  
补码:11110110  (就是把10的二进制码取反加一)  
同理+0在内存中:00000000  
-0在内存中=11111111+1=100000000取八位00000000  
也就是说+0和-0有同样的表示。  
做加减法也就可以一致了:  
3+4=00000011+00000100=00000111=7  
3-4=3+(-4)=00000011+11111100=11111111    
11111111取反加一等于1,所以11111111就是-1  
这么说可能还不很清楚,你还是去看看相关的理论书籍吧,可以看《计算机组成原理》。大二应该要学的。  
推荐你阅读Charel  Petzold的《编码的奥秘》一书,写深入浅出,讲述了很多有关计算机的最基本理论和数字电路的一些基本知识,我觉得给大一的学生看最合适了。  
00000000减1应该等于11111111  
   00000000-1  
=  00000000  +  (-1)  
=  00000000  +  11111111  
=  11111111  
为什么-1的补码是11111111  
因为补码就是“取反加一”。1是00000001,取反11111110,加一11111111
posted on 2006-05-07 16:17  咨询之路  阅读(326)  评论(0)    收藏  举报