軟考路——碼的世界,軟考路
參加了軟考之後,第一次接觸到了電腦系統知識的內容,其主要介紹了電腦的結構組成,以及電腦的原理,都是一些很抽象的東西。
大家都知道電腦中的運算都是通過二進位進行的,但是由於電腦中只有加法運算器,所以在進行減法運算往往會出錯,這也就要求我們要把減法運算轉化為加法運算。於是就出現了各種碼。
1、原碼
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值. 比如如果是8位二進位:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
原碼是人腦最容易理解和計算的表示方式.
2、 反碼 反碼的表示方法是:正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可見如果一個反碼錶示的是負數, 人腦無法直觀的看出來它的數值. 通常要將其轉換成原碼再計算.
反碼:解決負數加法運算問題,將減法運算轉換為加法運算,從而簡化運算規則;
3. 補碼 補碼的表示方法是:正數的補碼就是其本身,負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
對於負數, 補碼錶示方式也是人腦無法直觀看出其數值的. 通常也需要轉換成原碼在計算其數值.
PS:另一種原碼轉換為補碼的簡便方法:數值部分自低位向高位搜尋,第一個1以及其右的各位0保持不變,第一個1左邊的各位按位取反。
補碼:解決負數加法運算正負零問題,彌補了反碼的不足。
4、移碼
移碼的表示方法:不管正負數,只要將其補碼的符號位取反即可。
[+1] = [00000001]原 = [00000001]反 = [00000001]補=[10000001]移
[-1] = [10000001]原 = [11111110]反 = [11111111]補=[01111111]移
總結:
1、正數的原碼、補碼、反碼均為其本身;
2、負數(二進位)的原碼、補碼、反碼公式:
反碼 = 原碼(除符號位外)每位取反
補碼 = 反碼 + 1
反碼 = 補碼 - 1
移碼 = 補碼符號位取反
3、位元中,兩數的補碼之和等於兩數和的補碼。