1樓:夜隱霜華
原碼:先將十進位制數轉換成二進位制數,然後把最高位作為符號位,正數設為「0」,負數設為「1」
反碼:正數的反碼和原碼一樣,負數的反碼就是:符號位不變,數值位逐位取反
補碼:正數的補碼和原碼一樣,負數的補碼就是:反碼的最低位加1
看一下:求出45和-45在8位機器中的原碼反碼補碼
原碼 反碼 補碼
+45 00101101 00101101 00101101
(原碼、反碼、補碼都一樣)
-45 10101101 11010010 (最高位沒變,數值位取反) 11010011(反碼最低位加1)
2樓:做而論道
計算機中,只有補碼。
按照補碼的定義:
對於正數和零,補碼就等於原數;
對於負數,要用模,減去該數的絕對值。
如,求-1的8位補碼:
[-1]補 = 256 - 1 = 255 = 1111 1111 b
計算機的原碼,反碼,補碼是怎麼回事?可以舉例說明嗎?
3樓:王王王小六
原碼、反碼和補碼是計算機中對
數字二進位制的三種表示方法。
1、原碼
原碼(true form)是一種計算機中對數字的二進位制定點表示方法。原碼錶示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:
+0和-0),其餘位表示數值的大小。
例如:用8位二進位制表示一個數,+11的原碼為00001011,-11的原碼就是10001011。
2、反碼
反碼是數值儲存的一種,多應用於系統環境設定,如linux平臺的目錄和檔案的預設許可權的設定umask,就是使用反碼原理。反碼的表示方法是:正數的反碼與其原碼相同;負數的反碼是對正數逐位取反,符號位保持為1。
例如:[+7]反= 0 0000111 b;
[-7]反= 1 1111000 b。
3、補碼
正數:正數的補碼和原碼相同。負數:
負數的補碼則是符號位為「1」。並且,這個「1」既是符號位,也是數值位。數值部分按位取反後再在末位(最低位)加1。
也就是「反碼+1」。
例如:[+7]補= 0 0000111 b;
[-7]補= 1 1111001 b。
擴充套件資料
原碼、反碼、補碼的轉換方法如下:
(1) 已知原碼,求補碼。
例:已知某數x的原碼為10110100b,試求x的補碼和反碼。
首先通過原碼的首位確定該數字的正負,若為正數,反碼與原碼相同,補碼比原碼在末尾加1;若為負數,求其反碼時,符號位不變,數值部分按位求反;求其補碼時,再在其反碼的末位加1。
(2)已知補碼,求原碼。
按照求負數補碼的逆過程,數值部分應是最低位減1,然後取反。但是對二進位制數來說,先減1後取反和先取反後加1得到的結果是一樣的,故仍可採用取反加1的方法。
4樓:匿名使用者
計算機以二進位制補碼儲存資料
以16位機器為例:
比如83的二
進位制碼為:0000 0000 0101 0011由於正數的原始碼、反嗎、補碼,上面的既是原始碼,也是反碼和補碼下面通過負數講解原始碼、反碼、補碼之間的關係以-83為例
先求出-83絕對值的原始碼:0000 0000 0101 0011計算機區分正負數通過判斷最高位符號位,1為負數、0為正數那麼-83的原始碼為:1000 0000 0101 0011反碼在原始碼基礎上按位取反,符號位不變:
1111 1111 1010 1100
補碼在反碼的基礎上加1:1111 1111 1010 1101補碼轉原始碼:補碼基礎上按位取反後加一,符號位在取反時不變,加一時最高位符號位有進位的,進位忽略
取反:1000 0000 0101 0010加1:1000 0000 0101 0011
5樓:匿名使用者
十進位制→ 二進位制(怎麼算?要是不知道看計算機基礎的書去)47 → 101111
有符號的整數 原碼 反碼 補碼47 00101111 11010000 00101111(正數補碼和原碼相同)
-47 00101111 11010000 11010001(負數補碼是在反碼上加1)
補碼.原碼.反碼怎麼運算的啊.詳細一點
6樓:匿名使用者
數在計算機中是以二進位制形式表示的。
數分為有符號數和無符號數。
原碼、反碼、補碼都是有符號定點數的表示方法。
一個有符號定點數的最高位為符號位,0是正,1是副。
以下都以8位整數為例,
原碼就是這個數本身的二進位制形式。
例如0000001 就是+1
1000001 就是-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位原碼能表示的數多一個
又例:1011
原碼:01011
反碼:01011 //正數時,反碼=原碼
補碼:01011 //正數時,補碼=原碼
-1011
原碼:11011
反碼:10100 //負數時,反碼為原碼取反
補碼:10101 //負數時,補碼為原碼取反+1
0.1101
原碼:0.1101
反碼:0.1101 //正數時,反碼=原碼
補碼:0.1101 //正數時,補碼=原碼
-0.1101
原碼:1.1101
反碼:1.0010 //負數時,反碼為原碼取反
補碼:1.0011 //負數時,補碼為原碼取反+1
總結:在計算機內,定點數有3種表示法:原碼、反碼和補碼
所謂原碼就是前面所介紹的二進位制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小。
反碼錶示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
補碼錶示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
1、原碼、反碼和補碼的表示方法
(1) 原碼:在數值前直接加一符號位的表示法。
例如: 符號位 數值位
[+7]原= 0 0000111 b
[-7]原= 1 0000111 b
注意:a. 數0的原碼有兩種形式:
[+0]原=00000000b [-0]原=10000000b
b. 8位二進位制原碼的表示範圍:-127~+127
2)反碼:
正數:正數的反碼與原碼相同。
負數:負數的反碼,符號位為「1」,數值部分按位取反。
例如: 符號位 數值位
[+7]反= 0 0000111 b
[-7]反= 1 1111000 b
注意:a. 數0的反碼也有兩種形式,即
[+0]反=00000000b
[- 0]反=11111111b
b. 8位二進位制反碼的表示範圍:-127~+127
3)補碼的表示方法
1)模的概念:把一個計量單位稱之為模或模數。例如,時鐘是以12進位制進行計數迴圈的,即以12為模。
在時鐘上,時針加上(正撥)12的整數位或減去(反撥)12的整數位,時針的位置不變。14點鐘在捨去模12後,成為(下午)2點鐘(14=14-12=2)。從0點出發逆時針撥10格即減去10小時,也可看成從0點出發順時針撥2格(加上2小時),即2點(0-10=-10=-10+12=2)。
因此,在模12的前提下,-10可對映為+2。由此可見,對於一個模數為12的迴圈系統來說,加2和減10的效果是一樣的;因此,在以12為模的系統中,凡是減10的運算都可以用加2來代替,這就把減法問題轉化成加法問題了(注:計算機的硬體結構中只有加法器,所以大部分的運算都必須最終轉換為加法)。
10和2對模12而言互為補數。
同理,計算機的運算部件與暫存器都有一定字長的限制(假設字長為8),因此它的運算也是一種模運算。當計數器計滿8位也就是256個數後會產生溢位,又從頭開始計數。產生溢位的量就是計數器的模,顯然,8位二進位制數,它的模數為28=256。
在計算中,兩個互補的數稱為「補碼」。
2)補碼的表示: 正數:正數的補碼和原碼相同。
負數:負數的補碼則是符號位為「1」,數值部分按位取反後再在末位(最低位)加1。也就是「反碼+1」。
例如: 符號位 數值位
[+7]補= 0 0000111 b
[-7]補= 1 1111001 b
補碼在微型機中是一種重要的編碼形式,請注意:
a.採用補碼後,可以方便地將減法運算轉化成加法運算,運算過程得到簡化。正數的補碼即是它所表示的數的真值,而負數的補碼的數值部份卻不是它所表示的數的真值。
採用補碼進行運算,所得結果仍為補碼。
b.與原碼、反碼不同,數值0的補碼只有一個,即 [0]補=00000000b。
c.若字長為8位,則補碼所表示的範圍為-128~+127;進行補碼運算時,應注意所得結果不應超過補碼所能表示數的範圍。
7樓:匿名使用者
原碼, 反碼和補碼的概念.對於一個數, 計算機要使用一定的編碼方式進行儲存. 原碼, 反碼, 補碼是機器儲存一個具體數字的編碼方式。
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值。反碼就是正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。補碼就是正數的補碼就是其本身,負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反。
1. 原碼
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值. 比如如果是8位二進位制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符號位. 因為第一位是符號位, 所以8位二進位制數的取值範圍就是:
[1111 1111 , 0111 1111]
即[-127 , 127]
原碼是人腦最容易理解和計算的表示方式。
2. 反碼
反碼的表示方法是:
正數的反碼是其本身
負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可見如果一個反碼錶示的是負數, 人腦無法直觀的看出來它的數值. 通常要將其轉換成原碼再計算。
3. 補碼
補碼的表示方法是:
正數的補碼就是其本身
負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
對於負數,補碼錶示方式也是人腦無法直**出其數值的。通常也需要轉換成原碼在計算其數值。
為何要使用原碼, 反碼和補碼
在開始深入學習前, 我的學習建議是先"死記硬背"上面的原碼, 反碼和補碼的表示方式以及計算方法。
現在我們知道了計算機可以有三種編碼方式表示一個數. 對於正數因為三種編碼方式的結果都相同:
[+1] = [00000001]原 = [00000001]反 = [00000001]補
所以不需要過多解釋. 但是對於負數:
[-1] = [10000001]原 = [11111110]反 = [11111111]補
可見原碼, 反碼和補碼是完全不同的. 既然原碼才是被人腦直接識別並用於計算表示方式, 為何還會有反碼和補碼呢?
首先, 因為人腦可以知道第一位是符號位, 在計算的時候我們會根據符號位, 選擇對真值區域的加減. (真值的概念在本文最開頭). 但是對於計算機, 加減乘數已經是最基礎的運算, 要設計的儘量簡單.
計算機辨別"符號位"顯然會讓計算機的基礎電路設計變得十分複雜! 於是人們想出了將符號位也參與運算的方法. 我們知道, 根據運演算法則減去一個正數等於加上一個負數, 即:
1-1 = 1 + (-1) = 0 , 所以機器可以只有加法而沒有減法, 這樣計算機運算的設計就更簡單了。
於是人們開始探索 將符號位參與運算, 並且只保留加法的方法. 首先來看原碼:
計算十進位制的表示式: 1-1=0
1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2
如果用原碼錶示, 讓符號位也參與計算, 顯然對於減法來說, 結果是不正確的.這也就是為何計算機內部不使用原碼錶示一個數。
為了解決原碼做減法的問題, 出現了反碼:
計算十進位制的表示式: 1-1=0
1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0
發現用反碼計算減法, 結果的真值部分是正確的. 而唯一的問題其實就出現在"0"這個特殊的數值上. 雖然人們理解上+0和-0是一樣的, 但是0帶符號是沒有任何意義的.
而且會有[0000 0000]原和[1000 0000]原兩個編碼表示0。
於是補碼的出現, 解決了0的符號以及兩個編碼的問題:
1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]補 + [1111 1111]補 = [0000 0000]補=[0000 0000]原
這樣0用[0000 0000]表示, 而以前出現問題的-0則不存在了.而且可以用[1000 0000]表示-128:
(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]補 + [1000 0001]補 = [1000 0000]補
-1-127的結果應該是-128, 在用補碼運算的結果中, [1000 0000]補 就是-128. 但是注意因為實際上是使用以前的-0的補碼來表示-128, 所以-128並沒有原碼和反碼錶示.(對-128的補碼錶示[1000 0000]補算出來的原碼是[0000 0000]原, 這是不正確的)
使用補碼, 不僅僅修復了0的符號以及存在兩個編碼的問題, 而且還能夠多表示一個最低數. 這就是為什麼8位二進位制, 使用原碼或反碼錶示的範圍為[-127, +127], 而使用補碼錶示的範圍為[-128, 127]。
因為機器使用補碼, 所以對於程式設計中常用到的32位int型別, 可以表示範圍是: [-231, 231-1] 因為第一位表示的是符號位.而使用補碼錶示時又可以多儲存一個最小值。
計算機中資料儲存!原碼,反碼。補碼。如何轉換
在計算機系統中,數值,一律用補碼錶示和儲存。計算機中,並沒有原碼和反碼。那麼,什麼是補碼?補碼和數值,是怎麼換算的?這應該從 補數 說起。如果限定了參加計算的 位數 就會發生不同尋常的事。一般的計算,是用十進位制來進行的。如果,限定,只使用兩位數 那麼,1 和 99,功能就是相同的 25 99 一百...
計算機中,enter,ctrl enter,shift en
alt enter,將windows下執行的msdos視窗在視窗和全螢幕狀態間切換 在瀏覽器中可以開啟屬性視窗,在excel中可以換行 在world中的enter。其他請樓下的補充吧。朋友,你都沒說清楚是在哪兒用這個幾個組合呀?讓人怎麼回答?這些鍵在軟體編寫過程中是可以自定義的,所以。enter主要...
在計算機中bit的含義是什麼,在計算機中bit的含義是什麼?
一個二制位,八個bit組成一個位元組,是存貯資料的最小單位.二進位制位 bit 一個位元組 type 等於八個二進位制位。bit是電腦中檔案大小的單位,bit是位,byte是位元組,位元組是最小的單位,1bit 8byte。2進位制數 bit 1 byte 1111 1kb 1024byte 1mb...