機器碼的表示 原碼 反碼 補碼 移碼

2021-08-21 07:53:42 字數 1223 閱讀 5647

今天做筆試題時遇到的乙個小問題:在機器碼的表示方法中,有哪些方法對0的表示方式是唯一的? 毫不猶豫的選擇了補碼。後來發現我錯了,居然還有移碼這個東東。

到目前為止,我們學習了十進位制、二進位制、八進位制、十六進製制等用來代表實際數值的數,稱為真值,這些數我們再日常生活中都會使用到,那麼在計算機中數值是怎麼來表示的呢?

數在計算機中的表示形式

統稱為機器數

。計算機中處理資料及運算都是採用二進位制,通常規定機器數用八位二進位制表示。

實用的資料有正數和負數,因為計算機只能表示0、

1兩種狀態,資料的正號「

+」或負號「

-」,在

計算機裡就用一位二進位制的0或

1來區別

,通常放在最高位,成為符號位。

符號位數值化之後,為能方便的對機器數進行算術運算、提高運算速度,計算機設計了多種符號位與數值一起編碼的方法,最常用的機器數表示方法有

:原碼、反碼、補碼和移碼,下面就分別介紹一下它們的表示方法。

一、原碼、反碼、補碼

三種表示法的轉換過程如下:

說明:0

有兩種表示方式:

[+0]原=

0000000,

[-0]原=1

000000。

[+0]反=

0000000,

[-0]

反=11111111。0

有唯一的編碼:

[+0]補=

0000000,

[-0]補=

0000000。

二、移碼

因為個人移碼理解有點困難,

so單獨解釋一下:

移碼表示法是在數

x上增加乙個偏移量來定義的,常用來表示浮點數中的階碼,所以是整數。如果機器字長為

n,規定偏移量為2^(n-1)。若x

是整數,則

[x]移

=2^(n-1)+x

[+45]=+0101101+10000000,   [-45]=-0101101+10000000=01010011

2^(n-1)

的情況下,只要將補碼的符號位取反便可獲得相應的移碼表示。

0也編碼是相同的,

[+0]移=1

000000,

[-0]移=1

000000。

計算機之所以這些編碼方法是為了便於運算,提高運算速度。四種表示方法其實是層層遞進的,即會求十進位制的二進位制表示,記住符號位的正負表示,知道怎麼遞進的它們之間的關係。

機器碼的原碼,反碼,補碼,移碼介紹

數的機器碼表示有原碼,反碼,補碼,移碼。三者的關係如下 原碼 原碼就是數值二進位制本身,第一位表示符號位,正數符號位為0,負數的符號位為1,例 當x 100 10 x 的原碼為 x 原 01100100,當x 100 10 時,x 的原碼為 x 原 11100100,反碼 正數的反碼 原碼,負數的反...

數的機器碼表示(原碼,反碼,補碼,移碼)

1.機器數和真值 二進位制數有正負之分,如n1 0.101101,n2 0.101101,則n1是個正數,n2是個負數。機器不能直接把符號 表示出來,為了能在計算機中表示正負數,必須引入符號位,即把正負符號也用1位二進位制數碼來表示。把符號位和數值位一起編碼來表示相應的數的表示方法包括 原碼 補碼 ...

數的機器碼表示 原碼 反碼 補碼 移碼

首先區分兩個概念 真值與機器碼 為了解決在計算機內部數的正 負符號和小數點運算問題,而產生了把符號位和數值位一起編碼來表示相應的數的表示方法,如原碼,反碼,補碼,移碼 1.原碼正數 0 二進位制數 負數 1 二進位制數2.反碼正數 0 二進位制數 負數 1 二進位制數按位取反3.補碼正數 0 二進位...