C言語根底 原碼、反碼、補碼和移碼詳解。本站提示廣大學習愛好者:(C言語根底 原碼、反碼、補碼和移碼詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C言語根底 原碼、反碼、補碼和移碼詳解正文
原碼、反碼、補碼、移碼的作用?
在計算機內,機器數有無符號和帶符號數之分。無符號數表示負數,在機器數中沒有符號位。位於無符號數,若商定小數點的地位在機器數的最低位之後,則是純整數;若商定小數點的地位在機器數的最高位之前,則是純小數。關於帶符號數,機器數的最高位是表示正、負的符號位,其他位則表示數值。若商定小數點的地位在機器數的最低數值位之後,則是純整數;若商定小數點的地位在機器數的最高數值位之前(符號位之後),則是純小數。
為了便於運算,帶符號位的機器數可采用原碼、反碼和補碼等不同的編碼辦法,機器數的這些編碼辦法稱為碼制。
原碼、反碼、補碼、移碼如何表示?
舉例:[+45]原=00101101 -45=10101101 (以下一切例子都為這兩個數的變換)
原碼:
原碼表示法在數值後面添加了一位符號位(即最高位為符號位):負數該位為0,正數該位為1(0有兩種表示:+0和-0),其他位表示數值的大小。
舉例:[+45]原=00101101 [-45]原=10101101
反碼: 反碼是數值存儲的一種,但是由於補碼更能無效表現數字在計算機中的方式,所以少數計算機普通都不采用反碼表示數。
反碼表示法規則:負數的反碼與其原碼相反;正數的反碼是對其原碼逐位取反,但符號位除外。
舉例:[+45]反=00101101 [-45]反=11010010
補碼:在計算機零碎中,數值一概用補碼來表示和存儲。緣由在於,運用補碼,可以將符號位和數值域一致處置;同時,加法和減法也可以一致處置。此外,補碼與原碼互相轉換,其運算進程是相反的,不需求額定的硬件電路。
反碼表示法規則:負數的補碼與其原碼相反;一種復雜的方式,符號位堅持1不變,數值位從左邊數第一個1及其左邊的0堅持不變,右邊按位取反。也可以從反碼推補碼,就是在反碼的根底上加1。
舉例:[+45]補=00101101 [-45]補=11010011
移碼:
移碼(又叫增碼)是符號位取反的補碼,普通用做浮點數的階碼,引入的目的是為了保證浮點數的機器零為全0。這個不分正負。
舉例:[+45]移=10101101 [-45]移=01010011
以上就是機器碼的原碼、反碼、補碼和移碼的表示辦法,其實這些表示辦法都是為了讓計算機的運算愈加方便。
感激閱讀,希望能協助到大家,謝謝大家對本站的支持!