關於C語言的補碼
19,原碼用8位二進制是00010011
我想知道19的原碼用8位二進制是怎麼表示成00010011的
還有就是19用16位和32位是怎麼表示的,這方面的知識誰能介紹下,謝謝啦
最佳回答:
8bit(位)是一個Byte(字節).
2Byte(字節)是一個Word(字),16bit.
2Word(字)是一個DW(雙字),32bit.
---------------------------------
二進制的每一個都有自己的權值。對於一個字節來講,從左至右分別為128、64、32、16、8、4、2、1(發現規律了吧——乘2)
因為19=16+2+1,所以從右至左,第0位為1,第1位為1,第4位為1。
就得到了10011b
所以,如果用8位表示19當然就是00010011b
用16位表示就是0000000000010011b
用32位表示就是00000000000000000000000000010011b
--------------------------------------------------
至於你說的補碼的問題,是因為在計算機中,為了存貯負數(要與正數和0分開,不能重碼)而做的人為規定。
總之,你記住,計算機裡存貯數都是用補碼的形式。正數和0的補碼永遠都是自己,負數的補碼就是它的絕對值按位取反,加1。
[0]補=00000000b
[1]補=00000001b
[2]補=00000010b
[3]補=00000011b
----------------
[-0]補=00000000b
[-1]補=11111111b(注:-1的絕對值為1,按位取反後為11111110b,加1就得到了-1的補碼:11111111b)
[-2]補=11111110b
[-3]補=11111101b