當前位置:首頁 » 操作系統 » 八位機中源碼

八位機中源碼

發布時間: 2024-10-28 04:49:59

Ⅰ +0或者-0的源碼、反碼、補碼分別是什麼補碼是一樣的嗎

0原碼是00000000
-0原碼是10000000
0反碼是00000000
-0反碼是11111111
0補碼是00000000
補碼沒有正0與負0之分
正數的反碼、補碼和其原碼相同負數的反碼是其原碼除符號位外其他位取反負數的補碼是取其反碼後加1

Ⅱ 計算機的原碼,反碼,補碼是怎麼回事可以舉例說明嗎

原碼、反碼和補碼是計算機中對數字二進制的三種表示方法。

1、原碼

原碼(true form)是一種計算機中對數字的二進制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大小。

例如:用8位二進製表示一個數,+11的原碼為00001011,-11的原碼就是10001011。

2、反碼

反碼是數值存儲的一種,多應用於系統環境設置,如linux平台的目錄和文件的默認許可權的設置umask,就是使用反碼原理。反碼的表示方法是:正數的反碼與其原碼相同;負數的反碼是對正數逐位取反,符號位保持為1。

例如:

[+7]反= 0 0000111 B;

[-7]反= 1 1111000 B。

3、補碼

正數:正數的補碼和原碼相同。負數:負數的補碼則是符號位為「1」。並且,這個「1」既是符號位,也是數值位。數值部分按位取反後再在末位(最低位)加1。也就是「反碼+1」。

例如:

[+7]補= 0 0000111 B;

[-7]補= 1 1111001 B。

(2)八位機中源碼擴展閱讀

原碼、反碼、補碼的轉換方法如下:

(1) 已知原碼,求補碼。

例:已知某數X的原碼為10110100B,試求X的補碼和反碼。

首先通過原碼的首位確定該數字的正負,若為正數,反碼與原碼相同,補碼比原碼在末尾加1;若為負數,求其反碼時,符號位不變,數值部分按位求反;求其補碼時,再在其反碼的末位加1。

(2)已知補碼,求原碼。

按照求負數補碼的逆過程,數值部分應是最低位減1,然後取反。但是對二進制數來說,先減1後取反和先取反後加1得到的結果是一樣的,故仍可採用取反加1的方法。

Ⅲ 機器數、真值、原碼、反碼是什麼意思啊

1、機器數

一個數在計算機中的二進製表示形式, 叫做這個數的機器數。機器數是帶符號的,在計算機用一個數的最高位存放符號, 正數0,負數為1。12

比如,十進制中的數 +3 ,計算機字長為8位,轉換成二進制就是0000 0011。如果是 -3 ,就是 1111 1101 。那麼,這里的 00000011 和 1111 1101 就是機器數。 機器數包含了符號和數值部分。

2、真值

因為第一位是符號位,所以機器數的形式值就不能很好的表示真正的數值。例如上面的有符號數 1111 1101,其最高位1代表負,其真正數值是
-3 而不是形肢寬棚式值253(1111
1101按無符號整數轉換成十進制等於253)。所以,為區別起見歷則,將帶符號位的機器數對應的真正數值稱為機器數的真值。巧旅
例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –0111 1111 = –127;這里所說的比如-3二進制代碼為10000011,就是我們計算機裡面對-3表示的源碼。下面介紹源碼
首先說明一點
在計算機內,有符號數有3種表示法:原碼、反碼和補碼。

3、原碼

原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值. 比如如果是8位二進制
[+1]原 = 0000 0001
[-1]原 = 1000 0001
因為第一位是符號位, 所以若是8位二進制數,其取值范圍就是:
[1111 1111 , 0111 1111]
即[-127 , 127]
原碼是人腦最容易理解和計算的表示方式。

4 、反碼

反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
[+1] = [ 00000001 ]原碼 = [ 00000001 ]反碼;
[-1] = [ 10000001 ]原碼 = [ 11111110 ]反碼;
可見如果一個反碼表示的是負數, 人腦無法直觀的看出來它的數值. 通常要將其轉換成原碼再計算。

什麼是二進制的補碼?

註明:正數的補碼與負數的補碼一致,負數的補碼符號位為1,這位1即是符號位也是數值位,然後加1

補碼借鑒的模概念,雖然理解起來有點晦澀難懂。可以跳過

模的概念:把一個計量單位稱之為模或模數。例如,時鍾是以12進制進行計數循環的,即以12為模。
在時鍾上,時針加上(正撥)12的整數位或減去(反撥)12的整數位,時針的位置不變。14點鍾在捨去模12後,成為(下午)2點鍾(14=14-12=2)。從0點出發逆時針撥10格即減去10小時,也可看成從0點出發順時針撥2格(加上2小時),即2點(0-10=-10=-10+12=2)。因此,在模12的前提下,-10可映射為+2。由此可見,對於一個模數為12的循環系統來說,加2和減10的效果是一樣的;因此,在以12為模的系統中,凡是減10的運算都可以用加2來代替,這就把減法問題轉化成加法問題了(註:計算機的硬體結構中只有加法器,所以大部分的運算都必須最終轉換為加法)。10和2對模12而言互為補數。同理,計算機的運算部件與寄存器都有一定字長的限制(假設字長為16),因此它的運算也是一種模運算。當計數器計滿16位也就是65536個數後會產生溢出,又從頭開始計數。產生溢出的量就是計數器的模,顯然,16位二進制數,它的模數為2^16=65536。在計算中,兩個互補的數稱為「補碼」。比如一個有符號8位的數可以表示256個數據,最大數是0
1 1 1 1 1 1 1(+127),最小數1 0 0 0 0 0 0 0
(-128);那麼第255個數據,加2和減254都是一樣的效果得出的結果是第一個數據
,所以2和254是一樣的效果。對於255來說2和254是互補的數。
求一個正數對應補碼是一種數值的轉換方法,要分二步完成:
第一步,每一個二進制位都取相反值,即取得反碼;0變成1,1變成0。比如,00001000的反碼就是11110111。
第二步,將上一步得到的反碼加1。11110111就變成11111000。所以,00001000的二進制補碼就是11111000。也就是說,-8在計算機(8位機)中就是用11111000表示。
不知道你怎麼看,反正我覺得很奇怪,為什麼要採用這么麻煩的方式表示負數,更直覺的方式難道不好嗎?

二進制補碼的好處

首先,要明確一點。計算機內部用什麼方式表示負數,其實是無所謂的。只要能夠保持一一對應的關系,就可以用任意方式表示負數。所以,既然可以任意選擇,那麼理應選擇一種用的爽直觀方便的方式。
二進制的補碼就是最方便的方式。它的便利體現在,所有的加法運算可以使用同一種電路完成。
還是以-8作為例子。假定有兩種表示方法。一種是直覺表示法,即10001000;另一種是2的補碼表示法,即11111000。請問哪一種表示法在加法運算中更方便?隨便寫一個計算式,16
+ (-8) = ?16的二進製表示是 00010000,所以用直覺表示法,加法就要寫成:
00010000
+10001000原碼形式-8
---------
10011000
可以看到,如果按照正常的加法規則,就會得到10011000的結果,轉成十進制就是-24。顯然,這是錯誤的答案。也就是說,在這種情況下,正常的加法規則不適用於正數與負數的加法,因此必須制定兩套運算規則,一套用於正數加正數,還有一套用於正數加負數。從電路上說,就是必須為加法運算做兩種電路。所以用原碼表示負數是不行的。
現在,再來看二進制的補碼表示法。
00010000
+11111000補碼形式-8
---------
100001000
可以看到,按照正常的加法規則,得到的結果是100001000。注意,這是一個9位的二進制數。我們已經假定這是一台8位機,因此最高的第9位是一個溢出位,會被自動捨去。所以,結果就變成了00001000,轉成十進制正好是8,也就是16 + (-8) 的正確答案。這說明了,2的補碼表示法可以將加法運算規則,擴展到整個整數集,從而用一套電路就可以實現全部整數的加法。

二進制補碼的本質,本質是用來表示負整數的

在回答二進制補碼為什麼能正確實現加法運算之前,我們先看看它的本質,也就是那兩個求補碼步驟的轉換方法是怎麼來的。下面描述了一個正數怎麼求它對應負數在計算機的表達方式。比如128,正數為10000000,但是驚奇的發現-128也是10000000。但是這里由於屬於數據類型的限定,第八位同樣一個1代表不同的含義,前面的 1是數值位,後面數的 1是符號位。
要將正數轉成對應的負數,其實只要用0減去這個數就可以了。比如,-8其實就是0-8。用模數的概念解釋如下圖

為什麼正數加法也適用於二進制的補碼?

實際上,我們要證明的是,X-Y或X+(-Y)可以用X加上Y的2的補碼(-Y)完成。
Y的二進制補碼等於(11111111-Y)+1。所以,X加上Y的2的補碼,就等於:X + (11111111-Y) + 1;我們假定這個算式的結果等於Z,即 Z = X + (11111111-Y) + 1。
接下來,分成兩種情況討論。
第一種情況,如果X小於Y,那麼Z是一個負數。這時,我們就對Z採用補碼的逆運算,就是在做一次求補碼運算,求出它對應的正數絕對值,只要前面加上負號就行了。所以,
Z = -[11111111-Z+1] = -[11111111-(X + (11111111-Y) + 1)+1)] = X -
Y;這里如果X Y Z都是無符號型的,且X < Y 那麼Z 最終得到的數是|X-Y|距離的絕對值了,比如X=1,Y=
255,那麼Z=2,因為從255到1隻要加兩次就到了。這里你不要問我為什麼,這里就用到上面的模概念。
第二種情況,如果X大於Y,這意味著Z肯定大於11111111,但是我們規定了這是8位機,最高的第9位是溢出位,必須被捨去,捨去相當於減去嗎!所以減去100000000。所以,
Z = Z - 100000000 = X + (11111111-Y) + 1 - 100000000 = X - Y
這就證明了,在正常的加法規則下,可以利用2的補碼得到正數與負數相加的正確結果。換言之,計算機只要部署加法電路和補碼電路,就可以完成所有整數的加法。

Ⅳ 補碼,源碼,反碼,真值換算求解

補碼 94H = 1001 0100。

首位 1,既代表負號,也代表數值-128。

再加上數值位,就是真值:

-128 + 16 + 4 =-108。

--------------

又如果,補碼是:0001 0100。

首位是 0 !

此時的真值,就是:0 + 16 + 4 =+20。

-------------------

在計算機系統中,數值,一律採用補碼表示和存儲。

原碼和反碼,都是不存在的。

數值和補碼,直接轉換就可以了。

原碼和反碼,都是多少,無須關心。

有人說:原碼,比較直觀,可以看清數值。

其實,這種人,還不懂什麼是補碼。

熱點內容
密碼破譯屬於什麼計算機 發布:2024-11-23 12:11:51 瀏覽:977
九九乘法表php 發布:2024-11-23 12:04:36 瀏覽:762
微信h5緩存更換二級域名 發布:2024-11-23 12:04:36 瀏覽:204
nba2k22手游安卓版在哪裡上線 發布:2024-11-23 12:03:44 瀏覽:506
怎麼用我的電腦遠程連接伺服器 發布:2024-11-23 11:57:33 瀏覽:145
ue4材質不編譯 發布:2024-11-23 11:51:08 瀏覽:241
超微伺服器主板如何使用獨顯 發布:2024-11-23 11:45:46 瀏覽:830
Linux下C語言應用編程 發布:2024-11-23 11:43:41 瀏覽:901
源碼批量修改 發布:2024-11-23 11:32:01 瀏覽:603
關聯表查詢sql語句 發布:2024-11-23 11:29:56 瀏覽:169