在c語言中原碼反碼和補碼有什麼不同翱

2022-03-09 12:24:14 字數 7138 閱讀 2382

1樓:匿名使用者

1)原碼表示

原碼表示法是機器數的一種簡單的表示法。其符號位用0表示正號,用:表示負號,數值一般用二進位制形式表示。設有一數為x,則原碼表示可記作[x]原。

例如,x1= +1010110

x2= 一1001010

其原碼記作:

[x1]原=[+1010110]原=01010110

[x2]原=[-1001010]原=11001010

在原碼表示法中,對0有兩種表示形式:

[+0]原=00000000

[-0] 原=10000000

2)補碼表示

機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。設有一數x,則x的補碼表示記作[x]補。

例如,[x1]=+1010110

[x2]= 一1001010

[x1]原=01010110

[x1]補=01010110

即 [x1]原=[x1]補=01010110

[x2] 原= 11001010

[x2] 補=10110101+1=10110110

機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。設有一數x,則x的補碼表示記作[x]補。

例如,[x1]=+1010110

[x2]= 一1001010

[x1]原=01010110

[x1]補=01010110

即 [x1]原=[x1]補=01010110

[x2] 原= 11001010

[x2] 補=10110101+1=10110110

(3)反碼表示法

機器數的反碼可由原碼得到。如果機器數是正數,則該機器數的反碼與原碼一樣;如果機器數是負數,則該機器數的反碼是對它的原碼(符號位除外)各位取反而得到的。設有一數x,則x的反碼表示記作[x]反。

例如:x1= +1010110

x2= 一1001010

[x1]原=01010110

[x1]反=[x1]原=01010110

[x2]原=11001010

[x2]反=10110101

反碼通常作為求補過程的中間形式,即在乙個負數的反碼的未位上加1,就得到了該負數的補碼。

例1. 已知[x]原=10011010,求[x]補。

分析如下:

由[x]原求[x]補的原則是:若機器數為正數,則[x]原=[x]補;若機器數為負數,則該機器數的補碼可對它的原碼(符號位除外)所有位求反,再在未位加1而得到。現給定的機器數為負數,故有[x]補=[x]原十1,即

[x]原=10011010

[x]反=11100101+1

[x]補=11100110

例2. 已知[x]補=11100110,求[x]原。

分析如下:

對於機器數為正數,則[x]原=[x]補

對於機器數為負數,則有[x]原=[[x]補]補

現給定的為負數,故有:

[x]補=11100110

[[x]補]反=10011001+1

[[x]補]補=10011010=[x]原+1

[[x]補]補=10011010=[x]原

總結一下,原碼(為負時,正時都不變)全部取反即得到反碼,反碼加

"1"就得到補碼了,就是這麼簡單。

2樓:匿名使用者

(字長為8位)

整數x的原碼指:其數符位是0表示正,1表示負,其數值部分就是x絕對值得二進位制表示。

如:原=0000 0111 【-7】原=1000 0111整數x的反碼就是數符為與原碼一樣後面取反(1變0,0變1)如:反=0111 1000 【-7】反=1111 1000整數x的補碼就是在反碼的基礎上加1

如:補=0111 1001 【-7】補=1111 1001

3樓:匿名使用者

這是要分正負的,正數的原碼、反碼、補碼都相同;負數的補碼等於其反碼加一。

原碼、反碼和補碼說的都是二進位制形式。比如說10,它的原碼是0000000000001010,反碼、補碼也是它;而負數的則不一樣。比如說-10,求它的補碼的方法如下:

1、取-10的絕對值10;

2、寫10的原碼再取反(取反就是1變0,0變1);

3、反碼再加一。

再總結一下:

10的原碼 0000000000001010(原碼)取反 1111111111110101(反碼)再加一 1111111111110110(補碼)清楚了嗎

4樓:匿名使用者

正數的原碼,反碼和補碼都一樣的,而負數就不一樣了!計算機為了讓所有的數都是進行同乙個加法運算,就有了原碼,反碼和補碼的產生!負數的補碼等於它的絕對值的原碼取反後得到這個負數的反碼,而在反碼的基礎上加1就變成了這個負數的補碼了!

下面我用8位的來舉例(最高位是符號位):

45 原碼:00101101 反碼:00101101 補碼:00101101

-45 原碼:10101101 反碼:11010010(原碼取反:

符號位不變,而其它0變1,1變0) 補碼:11010011(反碼:11010010 +1=11010011)

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

明白了沒有?找這方面的書看看吧!

5樓:沙里波特

計算機中,只有補碼,並沒有原碼和反碼。

補碼,是帶符號數,在計算機中的儲存形式。

c 語言是高階語言。

用高階語言程式設計,只能、也必須,使用正負數字,不能用補碼。

如果需要使用補碼,那就不是高階語言了。

高階語言,是不用涉及到計算機內部的。

所以,計算機內部的補碼,就和高階語言毫無關係。

在 c 語言中,討論「原碼反碼補碼」,都是沒有影的事。

有些作者,明顯是個外行,寫教材時,東拉西扯的。

顯得他是多麼的高(yu)明(chun)。

c語言中的原碼,反碼,補碼有什麼作用,是用來做什麼的

6樓:匿名使用者

計算機中的整數類都是用補碼來儲存的。

而c語言中不需要關心原反補碼!

7樓:沙里波特

整數,儲存計算機中,就是補碼。

但是,c 語言,是高階語言。

那麼,用高階語言程式設計,就不需要討論計算機內部的儲存形式。

因此,c 語言和補碼,是完全不相關的兩碼事。

在 c 語言中,討論補碼(原碼反碼),顯然是外行。

8樓:官悅僕耘

(1)原碼表示法

原碼表示法是機器數的一種簡單的表示法。其符號位用0表示正號,用:表示負號,數值一般用二進位制形式表示。設有一數為x,則原碼表示可記作[x]原。

例如,x1=

+1010110

x2=一1001010

其原碼記作:

[x1]原=[+1010110]原=01010110

[x2]原=[-1001010]原=11001010

原碼表示數的範圍與二進位制位數有關。當用8位二進位制來表示小數原碼時,其表示範圍:

最大值為0.1111111,其真值約為(0.99)10

最小值為1.1111111,其真值約為(一0.99)10

當用8位二進位制來表示整數原碼時,其表示範圍:

最大值為01111111,其真值為(127)10

最小值為11111111,其真值為(-127)10

在原碼表示法中,對0有兩種表示形式:

[+0]原=00000000

[-0]

原=10000000

(2)補碼表示法

機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。設有一數x,則x的補碼表示記作[x]補。

例如,[x1]=+1010110

[x2]=

一1001010

[x1]原=01010110

[x1]補=01010110

即[x1]原=[x1]補=01010110

[x2]

原=11001010

[x2]

補=10110101+1=10110110

補碼表示數的範圍與二進位制位數有關。當採用8位二進位制表示時,小數補碼的表示範圍:

最大為0.1111111,其真值為(0.99)10

最小為1.0000000,其真值為(一1)10

採用8位二進位制表示時,整數補碼的表示範圍:

最大為01111111,其真值為(127)10

最小為10000000,其真值為(一128)10

在補碼表示法中,0只有一種表示形式:

[+0]補=00000000

[+0]補=11111111+1=00000000(由於受裝置字長的限制,最後的進製丟失)

所以有[+0]補=[+0]補=00000000

(3)反碼表示法

機器數的反碼可由原碼得到。如果機器數是正數,則該機器數的反碼與原碼一樣;如果機器數是負數,則該機器數的反碼是對它的原碼(符號位除外)各位取反而得到的。設有一數x,則x的反碼表示記作[x]反。

例如:x1=

+1010110

x2=一1001010

[x1]原=01010110

[x1]反=[x1]原=01010110

[x2]原=11001010

[x2]反=10110101

反碼通常作為求補過程的中間形式,即在乙個負數的反碼的未位上加1,就得到了該負數的補碼。

例1.已知[x]原=10011010,求[x]補。

分析如下:

由[x]原求[x]補的原則是:若機器數為正數,則[x]原=[x]補;若機器數為負數,則該機器數的補碼可對它的原碼(符號位除外)所有位求反,再在未位加1而得到。現給定的機器數為負數,故有[x]補=[x]原十1,即

[x]原=10011010

[x]反=11100101十)1

[x]補=11100110

例2.已知[x]補=11100110,求[x]原。

分析如下:

對於機器數為正數,則[x]原=[x]補

對於機器數為負數,則有[x]原=[[x]補]補

現給定的為負數,故有:

[x]補=11100110

[[x]補]反=10011001十)1

[[x]補]補=10011010=[x]原

c語言的原碼,反碼,補碼是什麼意思?

9樓:

1)原碼表示

原碼表示

法是機器數的一種簡單的表示法。其符號位用0表示正號,用:表示負號,數值一般用二進位制形式表示。設有一數為x,則原碼表示可記作[x]原。

例如,x1= +1010110

x2= 一1001010

其原碼記作:

[x1]原=[+1010110]原=01010110

[x2]原=[-1001010]原=11001010

在原碼表示法中,對0有兩種表示形式:

[+0]原=00000000

[-0] 原=10000000

2)補碼表示

機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。設有一數x,則x的補碼表示記作[x]補。

例如,[x1]=+1010110

[x2]= 一1001010

[x1]原=01010110

[x1]補=01010110

即 [x1]原=[x1]補=01010110

[x2] 原= 11001010

[x2] 補=10110101+1=10110110

機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。設有一數x,則x的補碼表示記作[x]補。

例如,[x1]=+1010110

[x2]= 一1001010

[x1]原=01010110

[x1]補=01010110

即 [x1]原=[x1]補=01010110

[x2] 原= 11001010

[x2] 補=10110101+1=10110110

(3)反碼表示法

機器數的反碼可由原碼得到。如果機器數是正數,則該機器數的反碼與原碼一樣;如果機器數是負數,則該機器數的反碼是對它的原碼(符號位除外)各位取反而得到的。設有一數x,則x的反碼表示記作[x]反。

例如:x1= +1010110

x2= 一1001010

[x1]原=01010110

[x1]反=[x1]原=01010110

[x2]原=11001010

[x2]反=10110101

反碼通常作為求補過程的中間形式,即在乙個負數的反碼的未位上加1,就得到了該負數的補碼。

例1. 已知[x]原=10011010,求[x]補。

分析如下:

由[x]原求[x]補的原則是:若機器數為正數,則[x]原=[x]補;若機器數為負數,則該機器數的補碼可對它的原碼(符號位除外)所有位求反,再在未位加1而得到。現給定的機器數為負數,故有[x]補=[x]原十1,即

[x]原=10011010

[x]反=11100101+1

[x]補=11100110

例2. 已知[x]補=11100110,求[x]原。

分析如下:

對於機器數為正數,則[x]原=[x]補

對於機器數為負數,則有[x]原=[[x]補]補

現給定的為負數,故有:

[x]補=11100110

[[x]補]反=10011001+1

[[x]補]補=10011010=[x]原+1

[[x]補]補=10011010=[x]原

總結一下,原碼(為負時,正時都不變)全部取反即得到反碼,反碼加

"1"就得到補碼了,就是這麼簡單。

原碼反碼和補碼有什麼區別,原碼 反碼和補碼有什麼不同?

關於原碼反碼補碼,您可以借本 計算機組成原理 看看計算機中資料的表示形式。首先更正下樓上的說法,正數的原碼反碼補碼都相同,即0011的反碼也為0011 切記 舉例來說 對於正數3,其二進位制形式為 0011,我們把 0011成為成為真值,在計算機中用0或1表示正負號,那麼 0011在計算機中原碼可以...

c語言中原碼補碼分別是什麼意思,c語言中補碼怎麼算的

原碼就是原來數字的二進位制的表示 比如 15 1110 這個是15的原碼 他的補碼就是0001 補碼,是有符號數在計算機中的存放形式。c 語言是高階語言,並不需要討論如此深層次的知識。在計算機中,還有 bcd 碼 餘三碼 格雷碼.各種碼,多了去了,c 語言的教材,怎麼不多寫幾種?原因就是,作者,他本...

輸入十進位制數,用C語言輸出其原碼補碼反碼移碼(十進位制數可

include include void main if n 0 用c語言,輸入乙個十進位制數,輸出相應的二進位制32位原碼 補碼 反碼 移碼和ieee754浮點數。70 include include void main if n 0 輸入乙個數字,既要用原碼反碼.顯示,又用ieee754浮點數顯...