真值和機器數
- 真值就是我們實際要表示的數字。
- 機器數就是這個數在計算機怎麼存的。
有符號數和無符號數
- 有符號數:一個字節佔8位,有符號就是有正有負,那麼這8位就得有一位表示正號和負號,剩下七位數才表示數值。
- 無符號數:一個字節佔8位,既然是無符號數,就是肯定是正的,這8位數都是數值位,對應C語言中的unsigned int。
定點數
- 定點數就是小數點的位置是固定的,假設一個數用一個字節存,也就是8位存,如果是整數,那麼小數點的位置在最後邊,如果是小數,那麼小數點的位置在最高數值位前邊,也就是符號位後邊(不考慮無符號數)。
定點數的原碼錶示法
定點整數
定點小數
舉例
原碼小結
- 假設有符號數用一個字節表示,那麼定點整數的最小值爲11111111B,定點整數最大值爲01111111B,共可以表示255個數,爲啥不是256,因爲10000000B和00000000B表示的都是0,雖然有256種二進制組合,但是隻表示255個數。
- 假設有符號數用一個字節表示,那麼定點小數的最小值爲11111111B,定點小數最大值爲01111111B,共可以表示255個數,爲啥不是256,因爲10000000B和00000000B表示的都是0,雖然有256種二進制組合,但是隻表示255個數。
補碼錶示法
反碼錶示法
移碼錶示法
總結
- 把十進制轉二進制,整數部分:除二取餘,倒着寫;小數部分:乘二取整,正着寫。
- BCD碼,用8421碼來表示一個十進制數,比如93,9對應1001,3對應0011,所以93的BCD碼就是10010011
- x和y都是一位BCD碼,進行加法運算時,如果和超過了9,則需要加6修正。
- n位無符號數,那麼n位都是數值位。
- 正數的原碼、反碼、補碼是一樣的。
- x的原碼和-x的原碼關係:數值位相同,符號位相反
- 原碼移位規則:符號位不變,空位補0
- 補碼的定義:模加真值。其中對於定點小數(n+1位)模是2,定點整數(n+1位)模是pow(2,n+1)
- 補碼比原碼(反碼)多表示一個數,都是數軸左邊的那個數,對於小數補碼可以表示-1,對於整數補碼可以表示-pow(2,n),都是用-0的原碼錶示的,即10000000
- x的補碼和-x的補碼關係:包含符號位,取反,再加1
- 補碼移位規則:左移符號位不變,空位補0;右移符號位不變,空位補符號位
- 補碼位擴展:小數低位用0擴展,整數高位用符號位擴展
- 根據原碼求補碼:整數的原碼就是補碼;對於負數來說,先求出負數的原碼,在從最低位起,遇到的0和第一個1不變,其他數值位取反
- 反碼就是補碼減1;或者反碼就是原碼數值位取反,表示範圍和原碼一樣。
- 移碼和補碼的關係:數值位相同,符號位相反。