C 原碼 反碼 補碼 移碼

2021-10-09 20:37:34 字數 2115 閱讀 5990

ps:精華全部在開頭部分,下面為細節部分

//以 -5 舉例

運算過程:原碼->反碼->補碼->移碼

反碼 :在原碼的基礎上,符號位不動,其他位取反 任何正數的原始碼=反碼=補碼,而負數都是通過補碼表示的。

補碼 :在反碼的基礎上,運算+1 任何正數的原始碼=反碼=補碼,而負數都是通過補碼表示的。

公式:兩數補碼的和==兩數和的補碼。

移碼 :在補碼的基礎上,符號位取反

一、原碼

1、什麼叫原碼

原碼(true form)是一種計算機中對數字的二進位制定點表示方法(也叫符號——絕對值碼)。

2、原碼的表示

最高位(符號位)0表示正,1表示負(從右到左)

中間不夠的用0補齊

(補多少具體看有多少個位元組大小,乙個位元組8位二進位制)

其餘部分的是該數絕對值的二進位制位數

例如:-5用原碼表示為1 000 0101//這樣寫只是便於理解

8用原碼表示為0 000 1000

3、原碼特點

二、反碼

1、什麼是反碼

反碼是數值儲存的一種(反碼運算不便,也沒有在計算機應用)

2、反碼的表示

正數的反碼是其本身

負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.

例如:[-5] = [1 000 0101] 原 =[1 111 1010] 反

[8] = [0 000 1000]原 = [0 000 1000]反

三、補碼

1、什麼是補碼

在反碼基礎上加一

補碼是為了讓機器學會減法運算

所有的處理器是電路做的,電路其實只是加法器,只能做加法。如何能讓電腦做減法呢,就用補碼。減去乙個數就等於加上她的補碼。於是減法就轉換為機器能執行的加法了,於是電腦就能算減法了)

2、補碼的表示

除符號位以外,各位取反,末位加一

例如:[-5] = [1 000 0101] 原 =[1 111 1010] 反 = [1 111 10 11]補

[8] = [0 000 1000]原 = [0 000 1000]反 =[0 000 1000]補

十進位制求二進位制

正整數

除二取餘,直至商為0,餘數倒數排序

負整數

先求與該數對應正整數的補碼,所有位取反,末位加一

(位數不夠時左邊補1)

補多少得看資料型別,例如

int型別佔4個位元組,乙個位元組需要8個二進位制表示,一共就是需要32位來表示

二進位制轉十進位制

如果首位是二進位制是0,表示是正整數,按照普通方法來求

如果首位是1,表明是負整數

所有位取反,末位加一,所得數字就是這個負數的絕對值

位數不夠左邊補1

四、移碼

1、什麼是移碼

在原有的補碼的基礎上符號位取反(又叫增碼或偏置碼)

移碼表示數值平移n位,n為移碼量;

移碼主要用於浮點數的階碼的儲存;

2、移碼表示

例如:[-5] = [1 000 0101] 原 =[1 111 1010] 反 = [1 111 10 11]補 = [0 111 10 11]移

[8] = [0 000 1000]原 = [0 000 1000]反 =[0 000 1000]補 = [1 000 1000]移

原碼,補碼,反碼,移碼

為什麼有這些碼 定義機器字長為n,若數值x是純整數 若數值x是純小數,對純小數的原碼計算是先將其轉換為二進位制 必須的 例 若機器字長為8,則 1 原 0 0000001 1 原 1 0000001 7 原 0 0000111 127 0 1111111 127 原 1 1111111 7 原 1 ...

原碼,反碼,補碼,移碼

移碼 又叫增碼 是符號位取反的補碼,先將符號位取反,再取補碼,意思就是正數只將 變為1,負數將 變為0,再取補 x 1011 x 移 11011 符號位 1 表示正號 x 1011 x 移 00101 符號位 0 表示負號 一般用做浮點數的階碼,引入的目的是為了保證浮點數的機器零為全0。一 原碼 求...

原碼 反碼 補碼 移碼

如果機器字長為n,那麼乙個數的原碼就是用乙個n位的二進位制數,其中最高位為符號位 正數為0,負數為1。剩下的n 1位表示概數的絕對值。例如 x 101011 x 原 00101011 x 101011 x 原 10101011 位數不夠的用0補全。ps 正數的原 反 補碼都一樣 0的原碼跟反碼都有兩...