當前位置:首頁 » 編程語言 » c語言的原碼補碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言的原碼補碼

發布時間: 2022-09-22 03:08:22

1. c語言:原碼,反碼 補碼

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. 在C語言中,「原碼,反碼和補碼」有什麼不同啊

正數的原碼,反碼和補碼都一樣的,而負數就不一樣了!計算機為了讓所有的數都是進行同一個加法運算,就有了原碼,反碼和補碼的產生!負數的補碼等於它的絕對值的原碼取反後得到這個負數的反碼,而在反碼的基礎上加1就變成了這個負數的補碼了!下面我用8位的來舉例(最高位是符號位):
45
原碼:00101101
反碼:00101101
補碼:00101101
-45
原碼:10101101
反碼:11010010(原碼取反:符號位不變,而其它0變1,1變0)
補碼:11010011(反碼:11010010
+1=11010011)
---------------------------------------------
明白了沒有?找這方面的書看看吧!

3. c語言中原碼,補碼分別是什麼意思

原碼就是原來數字的二進制的表示 比如 15= 1110 這個是15的原碼 他的補碼就是0001

4. C語言求原碼的補碼問題

必須要用無符號數,位運算的規定就是如此,你想,如果有符號是負數,用哪個來位運算,結果呢
進行與運算是判斷該數是否最大的負數,注意補碼的數值范圍,負數比正數多一個,該數為最小負數,表示範圍內沒有對應的正數

5. C語言中的正碼,反碼,和補碼作何解釋(名詞解釋)

補碼,是在計算機內部,正負數的存放格式。

在計算機內部,並沒有「正碼」、「反碼」。

C 語言是高級語言。

用高級語言編程,是不用關心計算機內部的事的。

如果非要涉及計算機內部的細節,那就不是高級語言了。

很多教材書籍的作者,都沒有弄明白:什麼是高級語言。

計算機內部的碼,有很多種了,要是討論起來,C 語言就學不完了。

6. C語言中,原碼,補碼和反碼怎麼換算

換算方法如下:

1、數在計算機中是以二進制形式表示的。

2、數分為有符號數和無符號數,原碼、反碼、補碼都是有符號定點數的表示方法。

3、一個有符號定點數的最高位為符號位,0是正,1是副;【原碼】就是這個數本身的二進制形式。

4、正數的【反碼】和補碼都是和原碼相同;負數的【反碼】是將其原碼除符號位之外的個位求反。

拓展資料

1、C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

2、盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

7. C語言中運算輸出是以原碼形式還是補碼形式

在C語言中,有符號整型數的存儲、運算的過程,都是採用補碼形式的。無符號整型數的存儲、運算的過程,也都是採用補碼形式的(只是沒有符號位而已)。

8. C語言中,原碼,補碼和反碼怎麼換算

數在計算機中是以二進制形式表示的。

數分為有符號數和無符號數。

原碼、反碼、補碼都是有符號定點數的表示方法。

一個有符號定點數的最高位為符號位,0是正,1是副。

以下都以8位整數為例,

原碼就是這個數本身的二進制形式。

例如

1000001
就是-1

0000001
就是+1

正數的反碼和補碼都是和原碼相同。

負數的反碼是將其原碼除符號位之外的各位求反

[-3]反=[10000011]反=11111100

負數的補碼是將其原碼除符號位之外的各位求反之後在末位再加1。

[-3]補=[10000011]補=11111101

一個數和它的補碼是可逆的。

為什麼要設立補碼呢?

第一是為了能讓計算機執行減法:

[a-b]補=a補+(-b)補

第二個原因是為了統一正0和負0

正零:00000000

負零:10000000

這兩個數其實都是0,但他們的原碼卻有不同的表示。

但是他們的補碼是一樣的,都是00000000

特別注意,如果+1之後有進位的,要一直往前進位,包括符號位!(這和反碼是不同的!)

[10000000]補

=[10000000]反+1

=11111111+1

=(1)00000000

=00000000(最高位溢出了,符號位變成了0)

有人會問

10000000這個補碼表示的哪個數的補碼呢?

其實這是一個規定,這個數表示的是-128

所以n位補碼能表示的范圍是

-2^(n-1)到2^(n-1)-1

比n位原碼能表示的數多一個

9. C語言的原碼,反碼,補碼是什麼意思

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"就得到補碼了,就是這么簡單。

10. c補碼的代碼寫法

c語言補碼的表示方法是:正數的補碼就是其本身,負數的補碼是在其原碼的基礎上,符號位不變,其餘各位取反,最後+1 (即在反碼的基礎上+1)。
[+1] = [00000001](原碼) = [00000001](反碼) = [00000001](補碼) [-1] = [10000001](原碼) = [11111110](反碼) = [11111111](補碼) 對於負數,補碼表示方式也是人腦無法直觀看出其數值的。通常也需要轉換成原碼在計算其數值。 一、原碼 求原碼:X≥0,則符號位為0,其餘照抄; X≤0,則符號位為1,其餘照抄。 【例1】X=+1001001 [X]原 = 01001001 【例2】X=-1001001 [X]原 = 11001001 二、反碼 求反碼:若X≥0,符號位為0,其餘照抄; 若X≤0,符號位為1,其餘按位取反。 【例3】X=+1001001 [X]反 = 01001001 【例4】X=-1001001 [X]反 = 10110110 三、補碼 求補碼:若X≥0,符號位為0,其餘照抄; 若X≤0,符號位為1,其餘取反後,最低位加1。 【例5】X=+1001001 [X]補 = 01001001 【例6】X=-1001001 [X]補 = 10110111