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

2022-03-03 09:38:48 字數 5623 閱讀 7596

1樓:匿名使用者

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

2樓:沙里波特

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

c 語言是高階語言,並不需要討論如此深層次的知識。

在計算機中,還有 bcd 碼、餘三碼、格雷碼...,各種碼,多了去了,c 語言的教材,怎麼不多寫幾種?

原因就是,作者,他本來就不懂計算機裡面的東西。

3樓:匿名使用者

原碼:正數末尾取0,負數尾數為1;補碼:正數=原碼,負數為反碼(除符號位)+1 比如 12 -12 原碼 0001100 1001100反碼 0001100 1110011補碼 0001100 1110110

4樓:匿名使用者

一、原碼

求原碼: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

c語言中補碼怎麼算的

5樓:風若遠去何人留

c語言中,所有的整型資料實際儲存的都是補碼。

要計算補碼,先要知道原碼的概念,原碼也就是乙個10進製數的二進位制表達方式,比如100的原碼為1100100。

補碼的計算原則為:

1 對於無符號數以及有符號數中的正數,其補碼就是原碼本身;

2 對於有符號數中的負數,其補碼為真值絕對值的反碼加一,其中反碼為原碼按位取反。

針對負數舉例說明:

-100在用char型(8位)表示時,其補碼可以按照如下流程計算。

1、 100的原碼為01100100

2、按位取反,得到反碼為10011011

3、將反碼加1, 即10011011+1 = 10011100。

於是-100的補碼表示就是10011100,也就是0x9c(16進製制)。

6樓:匿名使用者

首先建議樓主去惡補一下「原碼」、「反碼」以及「補碼」的相關知識。

以下我就先來分析一下(假設你已經了解了這些知識):

首先我們以無符號的視點來看待題目中的資料:

n = 0x7fff

m = 0x8000

可知對於n來說,他的二進位制模式為:0111 1111 1111 1111

對於m來說,他的二進位制模式為: 1000 0000 0000 0000

可以看到,最高位符號位n為0,而m為1

所以用帶符號數的視角來看待m、n的這串二進位制資料,我們知道n符號位(最高位)為零,所以n是正數,而m符號位為1,因而是負數。

對於補碼,正數好計算,就是他的值,也就是0111 1111 1111 1111 = 0x7fff = 32767

對於負數m,為了知道他的值我們可以這麼幹:

假設m的絕對值|m| = x,則我們對m就可以得到x

m = 1000 0000 0000 0000

取反:~m = 0111 1111 1111 1111

加1~m + 1 = 1000 0000 0000 0000

(這道題資料比較特殊,所以你看到m和~m+1結果貌似一樣,事實上你可以列舉其他值算算,一般這兩個位模式是不同的)

可知x = 32768

則可知m = -x = -32768以上

7樓:做而論道

c語言裡面,不涉及補碼。

補碼是組合語言中,表示帶符號數的。

c語言是高階語言,可以按照人類語言的寫法,直接使用正負號,並不需要使用補碼。

8樓:匿名使用者

正數補碼=它的2進製。

如5的補碼=原碼:101;

即0000,0000,0000,1001

負數補碼=負數的絕對值的2進製再取反+1;

如-5:

~0000,0000,0000,1001+1=1111,1111,1111,0110+1=1111,1111,1111,0111

9樓:眨眼小星星

正數的補碼是其原碼本身,負數的補碼是其絕對值的原碼按位取反加1

10樓:唯美神話

正數和0的補碼永遠都是自己,負數的補碼就是它的絕對值按位取反,加1。

[0]補=00000000b

[1]補=00000001b

[2]補=00000010b

[3]補=00000011b

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

[-0]補=00000000b

[-1]補=11111111b(注:-1的絕對值為1,按位取反後為11111110b,加1就得到了-1的補碼:11111111b)

[-2]補=11111110b

[-3]補=11111101b

11樓:

具體怎麼樣的你可以在任何一本c語言書上看到,我講再清楚都沒用。

我給你講講自己的理解。 把所有的數字看成時鐘上面的數字。

00000000---00000001--00000002.。。。。。一直到ffffffff

ffffffff是-1

我說的是32位有符號數int 用這個時鐘概念去理解補碼的,我保證你永遠不會忘的。

否則光記得 補碼=反碼+1 反碼=原碼和ffffffff取異或,這樣你在面試的時候遲早要蒙的。

希望對你有幫助。

12樓:

正數就為反碼 負數反碼+1

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

13樓:

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

14樓:匿名使用者

c語言原始碼就是c語言編輯好的原始程式,沒有改動過的。

補罵就是後續程式出現各種情況,需要增加或者修改內容,再次改動的。

15樓:愛娛樂唉生活

樓下正解關於反馬是反編譯?

c語言中,原碼,補碼和反碼怎麼換算?

16樓:吧友

換算方法如下:

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

2、數分du為有符號數和無符zhi號數,原碼、反

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

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

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

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

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

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

1 原碼表示 原碼表示法是機器數的一種簡單的表示法。其符號位用0表示正號,用 表示負號,數值一般用二進位制形式表示。設有一數為x,則原碼表示可記作 x 原。例如,x1 1010110 x2 一1001010 其原碼記作 x1 原 1010110 原 01010110 x2 原 1001010 原 1...

c語言中啥意思,C語言中 , , , 分別是什麼意思

詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!邏輯運算子把各個運算的變數 或常量 連線起來組成乙個邏輯表示式。邏輯運算子有4個,它們分別是 邏輯非 邏輯或 邏輯與 異或 在位運算裡面還有 位與 位或 的運算。什麼是邏輯運算 邏輯運算用來判斷一件事情是 對 的還是 錯 的,或者說是 成立 還是...

C語言中分別是什麼意思,c語言中, , , , 都是什麼意思?

是c語言中的復一種復合賦值運算子,制a b 等價於 a a b,是 bai後者的一種du簡化性寫法,並且,其優zhi先級 即 同乙個表達 dao式中存在多種運算子時,不同運算子之間的運算順序 與 相同。類似的還有 都具有相同形式的用法。的意思就是把左邊的第乙個符號移到右邊,其實就是b b c的意思。...