⑴ c語言中,原碼,補碼和反碼怎麼換算
換算方法如下:
1、數在計算機中是以二進制形式表示的。
2、數分為有符號數和無符號數,原碼、反碼、補碼都是有符號定點數的表示方法。
3、一個有符號定點數的最高位為符號位,0是正,1是副;【原碼】就是這個數本身的二進制形式。
4、正數的【反碼】和補碼都是和原碼相同;負數的【反碼】是將其原碼除符號位之外的個位求反。
拓展資料
1、C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
2、盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
⑵ 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位原碼能表示的數多一個
⑶ 一個簡單的C語言題
為什麼需要編碼?因為計算機世界只有0和1之分,而現實世界,我們常用的是十進制。為了讓計算機和現實世界聯系起來,編碼便誕生了。計算機中,採用位元組來存儲信息,一個位元組有8個二進制位組成。
首先需要知道,編碼方式有很多種,如ASCII編碼,BCD編碼等等。最後被人們廣泛接受和使用的,才是最經典的。你說的BCD碼用的不多,至少我是這么認為的。說說BCD編碼規則,它是用4位二進制數來表示一個十進制數。如,41的BCD碼為 0100 0001,這個好理解吧!0100表示4,0001表示1.
而原碼、反碼和補碼是計算機世界採用的編碼方式,現在BCD碼在計算機中用的很少。計算機實際存放的是數據的補碼,原碼和反碼是為了讓人們好理解,弄出來的概念。
最後來回答你的問題,41的原碼為0010 1001 ,反碼為0010 1001,補碼和原碼一樣,還是0010 1001。
為什麼是這樣的呢,先看三個規則:
1.所謂原碼就是二進制定點表示法,即最高位為號符位,「0」表示正,「1」表示負,其餘位表示數值的大小。
2.反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
3、補碼表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
41 = 32+8+1,因為是正數,所以最高位為0,這樣得出來的是原碼。反碼呢,按照規則,也是這么多,好理解吧!補碼就稍微麻煩點,如果原數是一個正數,則補碼和原碼相同,如果原數是一個負數,則結果是其反碼的最後一位加1.
相信你應該懂了! 希望可以幫到你!
⑷ c語言編程中的原碼是怎麼得出的
這里的"10的原碼"就是指10的二進制形式,也就是將十進制數字10轉換為二進制數字就得到了10的原碼.
⑸ c語言中原碼,補碼分別是什麼意思
原碼就是原來數字的二進制的表示 比如 15= 1110 這個是15的原碼 他的補碼就是0001
⑹ 在C語言中,「原碼,反碼和補碼」有什麼不同啊
正數的原碼,反碼和補碼都一樣的,而負數就不一樣了!計算機為了讓所有的數都是進行同一個加法運算,就有了原碼,反碼和補碼的產生!負數的補碼等於它的絕對值的原碼取反後得到這個負數的反碼,而在反碼的基礎上加1就變成了這個負數的補碼了!下面我用8位的來舉例(最高位是符號位):
45
原碼:00101101
反碼:00101101
補碼:00101101
-45
原碼:10101101
反碼:11010010(原碼取反:符號位不變,而其它0變1,1變0)
補碼:11010011(反碼:11010010
+1=11010011)
---------------------------------------------
明白了沒有?找這方面的書看看吧!
⑺ C語言中八進制和十六進制怎麼表示以及原碼,反碼
比如十進制的17,
八進製表示為:021 前面加0
十六進製表示為:0x11 前面加0x或者0X
原碼是用二進製表示如果是8bit原碼則為 0001 0001
反碼為二進制的相反,0變為1,1變為0,則反碼為1110 1110
⑻ c語言 關於有符號、無符號和補碼、原碼
在C語言中:只有十進制數有符號,八進制和十六進制沒有的,一個數的原碼是其二進制數,補碼是對原碼取反後再加上1,
比如: 5則原碼是 101,則反碼是010,補碼=010+1=011
⑼ C語言中八進制和十六進制怎麼表示以及原碼,反碼
比如十進制的17,
八進製表示為:021
前面加0
十六進製表示為:0x11
前面加0x或者0X
原碼是用二進製表示如果是8bit原碼則為
0001
0001
反碼為二進制的相反,0變為1,1變為0,則反碼為1110
1110
⑽ 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"就得到補碼了,就是這么簡單。