原碼
最高位0表示正,1表示負,其餘二進制位是該數字的絕對值的二進制位。如:-5的原碼爲10101
原碼簡單易懂,但加減運算複雜,存在加減乘除四種運算,增加了cpu的複雜度,零的表示不唯一
反碼
正數的反碼與其原碼相同,負數的反碼是對正數逐位取反,符號位保持爲1
如:-5的反碼爲11010
反碼運算不便,也沒有在計算機中應用
補碼
(1)已知十進制求二進制
求正整數的二進制 除2取餘,直至商爲零,餘數倒敘排序
求負數的二進制 先求與該負數相對應的正整數的二進制代碼,然後將所有位取反,末尾加1,不夠位數時左邊補1
求零的二進制 全是零
(2)已知二進制求十進制
如果首位是0,則表明是正整數,按普通方法求
如果首位是1,則表明是負整數,將所有位取反,再加一,所得數字就是該負數的絕對值
如果全是零,則對應的十進制也是零
Q : 一個int型的變量所能夠存儲的數據範圍是多大?
int佔4個字節,32位
int所能存儲的最大值二進制表示:
0111 1111 1111 1111 1111 1111 1111 1111
用十六進制表示 : 0x7FFFFFFF
int所能存儲的最小值二進制表示:
1000 0000 0000 0000 0000 0000 0000 0000
用十六進制表示 0x80000000
8位二進制所代表的的十進制示意圖
二進制 | 十進制 |
---|---|
0000 0000 | 0 |
0000 0001 | 1 |
… | … |
0111 1111 | 127 |
1000 0000 | -128 |
1000 0001 | -127 |
1000 0010 | -126 |
… | … |
1111 1111 | -1 |