1樓:匿名使用者
原碼、反碼和補碼是幾乎所有計算機教材的第一課,很基礎也很簡單,由於這些內容一直跟。
二、四、十六進位的轉化放在一起,我從來都是跳過這陪輪章直接往下看的,直到有一天,我自己被乙個超白目的問題難倒了……」將-3右移2(bit)位,結果是多少?」一下子,我發現蘆隱信,在過去的學習中我挑食了,現在補上這一課。原碼,是自然數值的機器數表示。
原碼的數值表示範圍跟二進位的位數有關,如8位二進位數最大的表示範圍是-127~+127之間(最高位是符號位)。反碼,是機器數運算過程的中間表示形式。具體規則是:
正數的反碼和原碼相同;負數的反碼是符號位不變,其他位按位求反得到的。如,-3的補碼是11111100。補碼,是機器數的運算表示形式。
引入了補碼克服了原碼的侷限性(由於符號位要單獨操作,運算方法比較複雜),使得計算減法可以用計算加法的方式得到;補碼另外的優點是,數字0補碼錶示的唯一性。具體的規則是:正數的補碼和原碼相同;負數的補碼是反碼末位加1。
如,-3的補碼是11111101。然後,運算攜念器對數值進行右移操作,負數補1,正數補0,得到11111111。從符號位看,代表的是負數,還原成原碼方法是求補碼的補碼,得到原碼10000001,代表十進位數-1。
總結一下:正數的原碼,反碼和補碼相同。負數的反碼是原碼保持符號位不變,其他位按位求反;補碼是反碼加1。
補碼還原是補碼的補碼。左移操作即所有的高位捨去(包括符號位),右邊(低位)補0;右移操作,所有的低位捨去(右移),高位(左邊)負數補1,正數補0。
2樓:匿名使用者
這個我前幾天給乙個人解釋過~我把的複製過來~ 計算機不會減法~補碼的作用是把減法變成加法~書上一般是總結的規律方便記憶~ 但是你實際從低層原理上看~並不是很準確~比如 補碼是沒正負號的~以下是我在其他地方的~ 計算機不會減法`所以用補碼把減法變畢鬥成加法` 你看的數一般就說 "正數的補碼是其本身,負數的補碼是原碼按位取反後1,符號位就是最高位等等`"但是確沒說為什麼 正書可以127`負數居然可以存128位其實是不準確`或者說有的地方是不對的從底層手消磨看`只是為了方便你記憶總結的規律~我們還是來看8位~ 首先~我得說補碼無正負號~這是官方解釋~ 8位二進位一共可以表示多少位數字?255個加個0~~ 其次~補碼橋咐其實是 跟最小數的 "距離"~為什麼這麼說是最小數的距離`解釋很麻煩`不過有個最簡單的方法是窮舉`(我們先看後7位~第一位我稍後解釋為什麼不是正負號)-128 是多少 0000000-127 0000001-128 0000002………1 11111110 00000001 0000001………127 1111111 從這裡我們可以看出~7位反碼是跟最小數 -128的距離~ 但我們又發現個問題~ -1到0的時候進位了`但是我們只有7位` 進的那一位沒有` 這就是為什麼要8位的原因~但現在又出現個問題` 為什麼 沒進位的第一位是1~進位以後第一位是0~也就是說~ -1為什麼不是01111111 而是11111111?我們還是舉例來說明`- 1+-2為多少~至少顯然是個負數~ 而如果-1表示為 01111111`那-1+-2`會為11111101~ 負數加負數居然等於整數!
顯然不行`所以 -1也11111111表示~ 也就是說` -128不是從00000000開始` 而是從10000000開始(注意開始窮舉是7位`這裡是八位)~ 所以我們看出~第一位主要是為了進位也有區別正負數的作用~但是其實不是正負號~其實這些舉例都可以換成數學方式說明~不過估計說起更復雜~舉例說明簡單些~ 希望對你有幫助。
真值與碼值有何區別?原碼、反碼、補碼三者之間如何換算?
3樓:沙裡波特
帶符號的數字,可變成各種**(八位的),見圖:
但是,在計算機中,原碼和反碼都是不存在的。
因此,就不必關心它們了。
只有補碼,才是實用的編碼。
其變換規律,你看看圖,就可以自己摸索出來。
4樓:全正肖安雙
如果原碼00000
反碼就是11111
補碼是反碼(正數)
反碼+1(負數)
真值是乙個變數本身所具有的真實值。
碼值就是個表。
原碼、反碼和補碼的轉換及表示範圍
5樓:長青數碼
數字在機器中儲存都是用二進位來儲存的,有符號數則有:原碼、反碼和補碼三種表示方式。這三種表示方式裡,最高位均代表符號位,1-負數,0-正數。
1.原碼。乙個數的原碼就是該數直接轉換成二進位得到的數字,第一位是符號位。
2.反碼。正數的反碼是自己本身;負數的反碼是原碼除符號位不動,其他所有位按位取反。
3.補碼。正數的補碼是自己本身;負數的補碼是反碼加一得到的(運算時包括符號位)。
故,正數的原反補碼都是相等的,負數的原反補碼是相互轉換得到的。
舉例:計算機儲存並計算8-5,因為cpu只有加法器,故要將8-5轉換成8+(-5)來計算。
8的原碼:0000 1000
8的反碼:0000 1000
8的補碼:0000 1000
5的原碼:1000 0101
5的反碼:1111 1010
5的補碼:1111 1011
0000 0011的符號位是0,則表示正數,原反補碼都相同,轉化為十進位就是3。
所以,資料在計算機中以補碼的形式表示和儲存,補碼的出現也更加便於計算。
二、原碼、反碼和補碼的表示範圍。
一般計算機字長32位,即用32位二進位表示數:
原碼:-[2^(n-1)-1] ~2^(n-1) -1
反碼:-[2^(n-1)-1] ~2^(n-1) -1
補碼: -2^(n-1) ~2^(n-1) -1
6樓:做而論道
在計算機系統中,數值,一律採用補碼錶示和儲存。
在計算機中,並沒有原碼和反碼。所以,原碼和反碼,與補碼的轉換,是毫無意義的。
你只要掌握「數值與補碼」的轉換,就夠用了。
下表中,有這個轉換的關係式:
原碼反碼補碼 0的表現形式
7樓:血刺瀟瀟h躬
做題目遇到的一題。想搜理解的。沒找到!
用原碼錶示帶符號的整數0時,有-0和鍵梁+0之分,其實就是符號位的變化。
補稿伍運碼形式的0,是帶負號的,因為在計算機中,負數的一律用補碼來表示。
0的補碼是在-0的原碼(10000)的基礎上,符號位不變,其它位按位取反再在低位加1(11111+1=00000),進而得到-0的補碼00000
補碼的0也就是-0: 0000 0000
原碼有2種表示,補碼只有1種。(我是橘脊用8位二進位來舉例的。)
8樓:沙裡波特
原碼反碼補碼,都是代表數字的。
小學就學過,慶知數字只有:負數、零、滑差中整數。
零,只有乙個零。
並沒有什麼正零負零。
而在原碼和反碼中,乙個零,卻都弄了兩個碼!
東食西宿嗎? 不像話。
補碼,才是合理的!因為,零,只有乙個補碼。所以,計算機中,只使用補碼,根本就不用原碼信山和反碼。
整數的原碼,反碼和補碼的表示整數的原碼反碼補碼是什麼意思??
原碼錶示 將符號位數碼化了的數,其中 用0表示,用1表示。反碼錶示 正數的反碼錶示與原碼錶示一樣 負數的反碼錶示是原碼錶示的符號位不變,數值位逐位取反。補碼錶示 正數的補碼錶示與原碼錶示一樣 負數的補碼錶示是原碼錶示的符號位不變,數值位逐位取反後最低位加1 反碼錶示最低位加1 例 63 原 0111...
原碼 補碼 反碼 移碼,原碼,反碼,補碼和移碼 原碼 1001101,反碼,補碼,移碼各是多少?
按一個位元組來算 8位 103的二進位制表示為1100111 原碼 11100111 最高位為符號位,下同 補碼 10011001 反碼 10011000 移碼 00011001 原碼錶示法是機器數的一種簡單的表示法。其符號位用0表示正號,用1表示負號,數值一般用二進位制形式表示。設有一數為x,則原...
0的原碼 反碼 補碼是什麼,什麼是原碼 補碼 反碼?
計算機中的儲存系統都是用2進位制儲存的,對我們輸入的每一個資訊它都會自動轉變成二進位制的形式,而二進位制在儲存的時候就會用到原碼,反碼和補碼 例如 輸入25 原碼就是 0000000000011001 反碼 1111111111100110 補碼 1111111111100111 數值在計算機中表示...