補碼的思考
補碼、反碼、原碼都是數(shù)碼的一種符號化方式,每一種方式都是數(shù)字編碼的方式,就好像我們在ASCII碼中約定a是65一個道理,但是數(shù)字存在特性就是計算,你的約定是不是方便構造計算就成了另外一個需要考慮的事情。那么為什么相較于原碼、反碼,補碼可以將減法轉(zhuǎn)換為加法呢。
首先我們來看鐘表,最上面是0點,往前數(shù)3個小時是昨天的9點我們認為是-3點,如果我們使時針再次來到這個位置除了倒退3格還可以向前9格來到9點,那么我們?yōu)榱说玫竭@個-3是不是可以先向前走9,也就是+9然后減去一圈也就是-12。這樣我們就把-3變成了+9,再減去一個周期12。這個就是補碼這邊按照計算機的寫法-3原碼為103,補碼為109,補碼中的如果對應數(shù)字-3并不是帶表負號而是-12,如果在運算位109+007,我們可以試想一下,就相當于116,但是周期是12,16會進位和符號位抵消也就是-12抵消掉了,那么得到鞥書004。如果109+002呢,得到111,最后的運算還是-12+11得到001。
我們來觀察補碼,先來看-3這個數(shù),假設采用2位表示數(shù)字,1位表示符號。這樣排出符號位,數(shù)字位只能是00,01,10,11四個數(shù),即周期是4,那么-3的補碼是101,這個符號位的1代表的就是-4,加1減-4得到-3,同樣一個道理。
標簽:補碼