計算機中的數(二)之原碼 補碼 反碼及其轉換

2021-10-01 22:03:41 字數 2132 閱讀 7725

原碼是機器數中最簡單的一種表示形式,符號位為0表示正數,符號位為1表示負數,數值位即是真值的絕對值,故原碼又稱為帶符號的絕對值表示。譬如101的原碼是0,101。我們用逗號","

","",

"作為符號位和數值部分的分隔符。

原碼正數定義

[ x]

原=

0,x \quad 2^n>x\geq 0\\ 2^n-x,0\geq x>-2^n\\ \end

[x]原​=

x,\quad 1>x\geq 0\\ 1-x, \quad 0 \geq x>-1\\ \end

[x]原​=

0,x \quad 2^n\geq x \geq0\\ 2^+x \quad 0>x\geq-2^n(mod 2^) \end

[x補​]=

2n+1

而不是2

n2^n

2n呢?舉個例子來解釋。比如−

101-101

−101

如果用模3來求補碼:[

−101]補

=1000

−101=0

,011

[-101]_補=1000-101=0,011

[−101]

補​=1

000−

101=

0,01

1這樣就和正數的補碼產生衝突了。所以我們用模2n+

12^

2n+1

來求負數的補碼。這個例子就是

[

−101]補

=10000

−101=1

,011

[-101]_補=10000-101=1,011

[−101]

補​=1

0000

−101

=1,0

11這樣就符合了我們的理解了。

補碼小數表示式

[ x]

補=

x\quad 1>x\geq0\\ 2+x\quad 0>x\geq-1(mod2) \end

[x]補​=

=0.111

xmax​=

0.11

1與1差了0.001,但是我們直接用1去加的話就只能得到0.001這同樣產生了衝突。所以要用2來加。

關於0的補碼

我們以整數為例子。[−0

]補

=100

−000

=100

[-0]_補=100-000=100

[−0]補​

=100

−000

=100

捨去1也就是00。

[ +0

]補=0

[+0]_補=0

[+0]補​

=0所以

[ −0

]補=[

+0]補

[-0]_補=[+0]_補

[−0]補​

=[+0

]補​反碼就比較容易了。他就是把原碼的每一位取反。這裡也給出數學表示式,有了前面補碼和原碼的學習,反碼的數學表示式易如反掌。

反碼整數表示式

[ x]

反=

0,x\quad 2^n>x\geq0\\ (2^-1)+x \quad 0\geq x>-2^n \end

[x]反​=

0,x\quad 1>x\geq0\\ (2-2^)+x \quad 0\geq x>-1 (mod(2-2^)) \end

[x]反​=

{0,x

1>x≥

0(2−

2−n)

+x0≥

x>−1

(mod

(2−2

−n))

原碼-補碼

①每位取反 ②末位+1

不管是整數還是小數 原碼到補碼,補碼到原碼都可以這麼算。讀者可自行驗算幾個碼。

原碼-反碼

每位取反,反之亦然。

補碼-反碼

末位減一,反之末位加一

計算機中原碼 反碼 補碼

首先要明白,在計算機中,數以二進位制的形式存在,其中有無符號數和有符號數 無符號數的,相當於十進位制中的自然數,沒有負數,因此八位無符號數的範圍 00000000 11111111,而有符號數的最高位表示符號,最高位為0表示整數 0000 0001 1 最高位為1表示負數 1000 0001 1 原...

計算機中的原碼 反碼和補碼

計算機中的原碼 反碼和補碼 看到這個標題,很多人有話要說了,切!這個東西每一本計算機基礎知識的書中都有介紹的,你還拿出來show什麼嘛!我的原則是你需要就來看一看,懂就不要去理會,倒也不必諷刺兩句,我相信總有需要它的人。當初我看書是沒看明白的,在網上查了好多資料才有所悟。前幾天跟老婆講原碼 反碼和補...

計算機中的原碼 反碼 補碼分析

今天給學生上數字邏輯第一節課,主要講了數制,後面簡單提及了原碼 反碼和補碼,碰到了兩個問題 第一,十進位制數轉八進位制數,學生練習時卡殼,不知道無從下手 第二,原本以為原碼 反碼 補碼應該是一年級甚至中學時就應該解決的問題,實際上原來根本不是這麼回事。中學老師即使講過,估計也是對付考試的方式簡單提及...