aabbcc296
級別: 論壇先鋒
|
請教:16位整數的負數最小怎么是-32768? 最高位為0時為正數,為1時為負數。如果是最小的負數,二進制表示為 1111 1111 1111 1111,應為—32767呀! 書上說整數用補碼來表示,補碼是什么意思啊? 怎么表示負數呀?1000 0000 0000 1010是不是就是—6呀? 0000 0000 0000 1010是不是就是6呀? |
---|---|
|
ymmfa
不想大江大河,不想浪起潮落,只愿一灣小湖,靜待歲月安好。
級別: 管理員
|
我記得有些東西,16位正的上限是32767,如果再大,就變成-32768了。 |
|
---|---|---|
本帖最近評分記錄:
|
fanuc_zgj
級別: 探索解密
|
負數的補碼就是對反碼加一,而正數不變,正數的原碼反碼補碼是一樣的。 采用補碼表示時,16位整數的負數最小數就是-32768,而正數最大數是32767; 16位原碼表示的整個數據區間為:【-32767—— -0,+0 ——32767】 16位補碼表示的整個數據區間為:【-32768——0——32767】 請注意這兩種碼表示的個數總數是一樣的,但補碼表示的數據卻是唯一的; [1111 1111 1111 1111] 原碼表示時確為-32767,但當采用補碼表示時,規定由-32768由于代替了-0(為了確保整個數據區間只有一個0,而不是一個+0和一個-0),因而它也就沒有了原碼和反碼。 |
---|---|
本帖最近評分記錄: |