❶ 原碼,反碼,補碼。和他們之間的轉換
是原碼
不是源碼
對於整數:補碼反碼原碼都是一樣的,也就是它本身的二進制
對於負數:
原碼:絕對值的原碼,將最高為變1
反碼:絕對值的原碼按位取反
補碼:絕對值的原碼按位取反再加1
❷ 原碼,反碼,補碼和移碼: 原碼:1001101,反碼,補碼,移碼各是多少
解:首位數字表示正負不做變(1為負數,0為正數)
反碼:1110010(正數反碼等於原數,題中為負數,則除首位數對應取反)
補碼:1110011(得出反碼數基礎上末位加一)
移碼:0110011(補碼符號位第一位數字取反)
反碼是數值存儲的一種,多應用於系統環境設置,如linux平台的目錄和文件的默認許可權的設置umask,就是使用反碼原理。
補碼(2's complement)是一種用二進製表示有號數的方法,也是一種將數字的正負號變號的方式。
移碼(又叫增碼)是符號位取反的補碼,一般用指數的移碼減去1來做浮點數的階碼,引入的目的是為了保證浮點數的機器零為全0。
補碼的設計目的是:
1.使符號位能與有效值部分一起參加運算,從而簡化運算規則.
2.使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計 所有這些轉換都是在計算機的最底層進行的,而在我們使用的匯編、C等其他高級語言中使用的都是原碼。
小數和分數的補碼:
1.十進制分數補碼可以先將分子和分母分別表示成二進制數,然後計算出二進制小數,再按下面第三步的方法將求出小數的補碼形式。
2.十進制小數的補碼也應該先將其轉換成二進制小數,再按下面第三步的方法將求出小數的補碼形式。
❸ 將十進制數-68轉化為二進制下的源碼、反碼、補碼
68的二進制是0100
0100,首位是符號號,負號為1所以-68
原碼:1100
0100負數的反碼是原碼符號號不變,其它位取反:10111011負數的補碼是反碼尾加1,所以補碼:10111100
二進制數除法與十進制數除法很類似。可先從被除數的最高位開始,將被除數(或中間余數)與除數相比較,若被除數(或中間余數)大於除數,則用被除數(或中間余數)減去除數,商為1,並得相減之後的中間余數,否則商為0。
再將被除數的下一位移下補充到中間余數的末位,重復以上過程,就可得到所要求的各位商數和最終的余數。
❹ C語言源碼生成目標文件後的二進制碼是原碼,反碼,還是補碼
當然是補碼了。計算機中所有的表示都是用補碼。因為正數的補碼就是它本身,所以正數在內存中既是原碼也是補碼,負數肯定是補碼了哦。所以都是補碼。
你說的」反碼和原碼只用了介紹補碼為什麼出現,實際上已經不用了?「是因為為了引出補碼的概念和利用反碼和原碼如何求補碼,所以就介紹了反碼和原碼。對於負數
補碼=取反+1;
所以原碼=取反(補碼-1)
你看反碼是補碼和原碼之間的聯系,介紹它就是為了計算
對於正數,補碼=原碼=本身,也是為了求補碼
❺ C語言源碼生成目標文件後的二進制碼是原碼,反碼,還是補碼
計算機中的二進制碼形式特指數值的二進制碼形式。
目標文件中包含有字元串、指令、相關數據等,其中數據部分大多是用補碼形式保存的。其它部分沒有這樣的概念。
說大多是因為有些計算機體系不用補碼形式保存數據。
至於計算機倒底何時用原碼、反碼、補碼,我想是樓主對碼制有所誤解。
採用何種碼制與CPU相關。比如I386體系,負數用補碼表示,C語言編譯器在遇到負數時會轉化成補碼形式。
❻ 源碼 反碼 補碼的概念
帶符號數,有三種表示方法,即:原碼、反碼和補碼。
但是,在計算機系統中,數值一律用【補碼】來表示和存儲。
所以,在計算機系統中,原碼和反碼,都是不存在的。
使用補碼的意義:可以把減法或負數,轉換為加法運算。
因此,就能簡化計算機的硬體。
=====================
補碼的概念,來自於:補數。
比如鍾表,時針轉一圈,周期是 12 小時。
那麼,倒撥 3 小時,可以用正撥 9 小時代替。
9,就是-3 的補數。計算方法:9 = 12-3。
同理,分針倒撥 X 分,可以用正撥(60-X)代替。
60,是分針的周期。
同理,三角函數的周期是 2π。那麼,
在-π/2 處的函數值,就與2π-π/2 = +3π/2處相同。
------------
當你使用兩位十進制數:0~99,周期就是 一百。
那麼,減一,就可以用 +99 代替。
24-1 = 23
24 + 99 = (1) 23
舍棄進位,這兩種演算法,功能就是相同的。
於是,99 就是 -1 的補數。
其它負數的補數,可以按照下式來求:
補數 = 周期 + 負數
------------
計算機中使用二進制,補數,就改稱為【補碼】。
八位二進制是:0000 0000~1111 1111。
相當於十進制:0~255,周期就是 256。
那麼,-1,就可以用 255 = 1111 1111 代替。
所以:-1 的補碼,就是 1111 1111 = 255。
同理:-2 的補碼,就是 1111 1110 = 254。
繼續:-3 的補碼,就是 1111 1101 = 253。
。。。
最後:-128 的補碼,就是 1000 0000 = 128。
負數補碼的計算公式:【 256 + 這個負數 】。
(式中的 256 = 2^8,是八位二進制的周期。)
正數,並不存在補碼的問題。
所以,正數,並沒有補碼,可以直接運算。
(也有人亂說:正數本身就是補碼。)
------------
求解算式:7-3 = 4。
計算機中,並沒有減法器,必須改用補碼相加。
列豎式如下:
7 的補碼=0000 0111
-3的補碼=1111 1101
--相加-------------
得:(1)0000 0100= 4 的補碼
舍棄進位,只保留八位,結果完全正確。
------------
藉助於補碼,可以簡化計算機的硬體。
原碼和反碼,都沒有這種功能。
所以,在計算機中,根本就沒有原碼和反碼。
它們都是什麼?就不用關心了。
❼ 計算機源碼,反碼,補碼之間怎麼計算
轉換方法:
如果是正數或零,則首位為 0,補碼=原碼=反碼。
否則,首位為 1,數值位取反加一,即可實現「補碼與原碼」互換。
例如:
對 1111 1001 取反,為 1000 0110,再加一,得:1000 0111。
對 1000 0111 取反,為 1111 1000,再加一,得:1111 1001。
這說明,補碼 ←→ 原碼,方法是相同的。
❽ 計算機的原碼,反碼,補碼是怎麼回事可以舉例說明嗎
計算機的原碼,反碼,補碼是怎麼回事?
可以舉例說明嗎?
計算機中,並沒有原碼和反碼。
補碼是怎麼回事?
這得從「補數」談起。
計算機所計算的位數,是固定的,如八位機。。。
位數限定之後,就可以用「補數」代替負數,用加法實現減法運算。
如兩位十進制,-1,就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (一百) 24
舍棄進位,只取兩位,這兩種演算法功能就是相同的。
99,就是-1 的補數。計算公式:補數 = 一百+負數。
一百,是兩位十進制數的計數周期。
-------------------------
計算機用二進制,補數,就改稱為:補碼。
八位二進制:0000 0000 ~ 1111 1111 (十進制 255)。
計數周期是:2^8 = 256。
所以,-1 補碼就是 256 + (-1) = 255 = 1111 1111(二進制)。
用不存在的「原碼反碼取反加一」來求,也是這個結果。
求負數補碼的計算公式: 周期 + 該負數。
正數,不用轉換。也可以說,正數自身就是補碼。
-------------------------
可以舉例說明嗎?
例如: 7-3 = 4。
用補碼的計算過程如下:
7 的補碼=0000 0111
-3的補碼=1111 1101
--相加-------------
得(1) 0000 0100 = 4 的補碼
舍棄進位,只保留八位作為結果,這就實現了 7-3。
❾ 8位二進制原碼 補碼 反碼的表示範圍各是多少 怎麼算的
8位二進制原碼的表示範圍:-127~+127。
8位二進制反碼的表示範圍:-127~+127。
8位二進制補碼的表示範圍:-128~+127。
反碼是數值存儲的一種,多應用於系統環境設置,如linux平台的目錄和文件的默認許可權的設置umask,就是使用反碼原理。在計算機內,定點數有3種表示法:原碼、反碼和補碼。
原碼是計算機機器數中最簡單的一種形式,數值位就是真值的絕對值,符號位位「0」時表示正數,符號位為「1」時表示負數,原碼又稱帶符號的絕對值。為了方便整數和小數區別,整數的符號位與數值位之間用「,」隔開,小數的符號位與數值位之間用「.」隔開。