程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C言語根底 原碼、反碼、補碼和移碼詳解

C言語根底 原碼、反碼、補碼和移碼詳解

編輯:關於C++

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

   以上就是機器碼的原碼、反碼、補碼和移碼的表示辦法,其實這些表示辦法都是為了讓計算機的運算愈加方便。

 感激閱讀,希望能協助到大家,謝謝大家對本站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved