標籤:
1.常用的數制
十進位 0~9
八進位 0~7
二進位 0~1
十六進位 0~F
2.十進位 轉 各個進位
方法 : 除以基數取餘反向
3. 2進位 8進位 16進位 轉十進位
二進位
___________________________
2^3 2^2 2^1 2^0
1 0 0 1 X
=8+ 1 = 9
八進位
———————————--------------
8^1 8^0
1 7
=1*8 + 7*1 = 15
十六進位類似。
4.二進位轉 十六進位 八進位
二轉八
三位一組 結果並在一起
二轉十六
四位一組 結果合并在一起
5. 整數在記憶體中的儲存,採用二進位
符號位
原碼 正數 0
負數 1
反碼 正數 和原碼相同
負數 在原碼基礎上,符號位不變,各個位取反
補碼 正數 和源碼相同
負數 在反碼基礎上,符號位不變,末位 +1
案例↓↓↓↓↓↓
————————————————————————————
原碼 反碼 補碼
5 0000 0101 0000 0101 0000 0101
-5 1000 0101 1111 1010 1111 1011
6. 機器數 和 真值
用“+”、“-”號加絕對值來表示數值的大小,用這種形式表示的數值在電腦中稱為“真值”
符號數位化後,位元的最高位“0”表示正號,“1”表示負號,用這種形式表示的數值在電腦中稱為“機器數”
機器數中小數點隱含不佔位
機器數 有符號 純整數 點在最低位之後
純小數 點在符號位之後,最高位之前。
無符號 純整數 點在最低位之後
純小數 點在最高位之前
7.小數的儲存
電腦中小數以二進位(浮點數)形式儲存。
首先是一個十進位小數形式,轉化成二進位的計算案例。
————————————————————————————————
0.8125 轉換成二進位
其實這種情況是趕巧了得到一個確切的值。
————————————————————————————————
但對於某些特殊情況是這樣的
8.浮點數產生誤差的原因
有兩鐘情況,會產生誤差
1)以二進位儲存浮點數,所以一些原本有限位的小數,按照上面方法運算以後,可能變成一個無限迴圈的小數。
————————————————————————————————
(十進位)0.9轉成2進位是無限迴圈小數0.1110011001100110011...
————————————————————————————————
2)電腦儲存浮點數的精度有限,例如float可以保留十進位最多7位(二進位23位)有效數字,double 可以保留十進位15~16位(二進位52位)有效數字。那有效數字以後的就被忽略了。
小數在電腦中為什麼會有誤差?說明機器數、碼制、浮點數、以及數制轉換的一些問題