源碼怎麼算
『壹』 知道 補碼,如何 計算 原碼
兩種計算方法:
演算法1: 補碼=原碼取反再加1的逆運算
10010110是補碼,應先減去1變為反碼,得10010101;
由反碼取得源碼即除符號位外其他為按位取反,得11101010,即十進制數的-106
演算法2:負數補碼速演算法,由最低位(右)向高位(左)查找到第一個1與符號位之間的所有數字按位取反的逆運算
10010110是補碼,符號位與最後一個1之間的所有數字按位取反,得11101010
兩種演算法得出同樣結果
『貳』 C語言中,什麼是補碼、源碼、反碼分別怎樣計算
一、原碼
求原碼: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
『叄』 計算機中補碼為10111010,怎麼計算求源碼
源碼→補碼:除符號位外各位取反再+1,那反之,知道補碼求源碼,只需符號位外各位-1再取反嘍。以此題為例,10111010-1=10111001,再取反得11000110,所以源碼即使11000110。
『肆』 計算機源碼,反碼,補碼之間怎麼計算
1、正整數的原碼、反碼、補碼完全一樣,即符號位固定為0,數值位相同。
2、負整數的符號位固定為1,由原碼變為補碼時,規則如下:原碼符號位1不變,整數的每一位二進制數位求反,得到反碼;反碼符號位1不變,反碼數值位最低位加1,得到補碼。
3、例如正整數的原碼為01110110,則反碼和補碼也為01110110;負整數的原碼為11110110,反碼為10001001,補碼為11110111。
拓展資料:
1、反碼是數值存儲的一種,多應用於系統環境設置,如linux平台的目錄和文件的默認許可權的設置umask,就是使用反碼原理。在計算機內,定點數有3種表示法:原碼、反碼和補碼。
2、在計算機系統中,數值一律用補碼來表示(存儲)。 主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補 碼表示的數相加時,如果最高位(符號位)有進位,則進位被舍棄。
『伍』 已知某數的二進制原碼 怎麼算他的反碼和補碼怎麼算
首先你得區分這個二進制書是帶符號位的還是不帶符號位的。
不帶符號位的:反碼就是將其原碼按位取反,比如「1000」反碼:「0111」;補碼是其本身。
帶符號位的:反碼就是其符號位不變,其他位按位取反。比如「10000000」
反碼:「11111111」;補碼就是反碼再加一。反碼「11111111」
補碼「10000000」。
『陸』 一個數的原碼,反碼,補碼怎麼算
計算機中的存儲系統都是用2進制儲存的,對我們輸入的每一個信息它都會自動轉變成二進制的形式,而二進制在存儲的時候就會用到原碼,反碼和補碼例如:輸入25原碼是:0000000000011001反碼: 1111111111100110 補碼: 1111111111100111
數值在計算機中表示形式為機器數,計算機只能識別0和1,使用的是二進制,而在日常生活中人們使用的是十進制,"正如亞里士多德早就指出的那樣,今天十進制的廣泛採用,只不過我們絕大多數人生來具有10個手指頭這個解剖學事實的結果.盡管在歷史上手指計數(5,10進制)的實踐要比二或三進制計數出現的晚. "(摘自<<數學發展史>>有空大家可以看看哦~,很有意思的).為了能方便的與二進制轉換,就使用了十六進制(2 4)和八進制(23).下面進入正題.
數值有正負之分,計算機就用一個數的最高位存放符號(0為正,1為負).這就是機器數的原碼了.假設機器能處理的位數為8.即字長為1byte,原碼能表示數值的范圍為
(-127~-0 +0~127)共256個.
有了數值的表示方法就可以對數進行算術運算.但是很快就發現用帶符號位的原碼進行乘除運算時結果正確,而在加減運算的時候就出現了問題,如下: 假設字長為8bits
( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10
(00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 顯然不正確.
因為在兩個整數的加法運算中是沒有問題的,於是就發現問題出現在帶符號位的負數身上,對除符號位外的其餘各位逐位取反就產生了反碼.反碼的取值空間和原碼相同且一一對應. 下面是反碼的減法運算:
( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10
(00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有問題.
( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10
(00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正確
問題出現在(+0)和(-0)上,在人們的計算概念中零是沒有正負之分的.(印度人首先將零作為標記並放入運算之中,包含有零號的印度數學和十進制計數對人類文明的貢獻極大).
於是就引入了補碼概念. 負數的補碼就是對反碼加一,而正數不變,正數的原碼反碼補碼是一樣的.在補碼中用(-128)代替了(-0),所以補碼的表示範圍為:
(-128~0~127)共256個.
注意:(-128)沒有相對應的原碼和反碼, (-128) = (10000000) 補碼的加減運算如下:
( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10
(00000001)補 + (11111111)補 = (00000000)補 = ( 0 ) 正確
( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10
(00000001) 補+ (11111110) 補= (11111111)補 = ( -1 ) 正確
所以補碼的設計目的是:
⑴使符號位能與有效值部分一起參加運算,從而簡化運算規則.
⑵使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計
所有這些轉換都是在計算機的最底層進行的,而在我們使用的匯編、C等其他高級語言中使用的都是原碼
『柒』 計算機原碼反碼補碼怎麼算
計算機原碼反碼補碼計算方法:
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]補
對於負數,補碼表示方式也是人腦無法直觀看出其數值的。通常也需要轉換成原碼在計算其數值。
(7)源碼怎麼算擴展閱讀:
原碼,反碼和補碼是完全不同的。既然原碼才是被人腦直接識別並用於計算表示方式,為何還會有反碼和補碼呢?
首先,因為人腦可以知道第一位是符號位,在計算的時候我們會根據符號位,選擇對真值區域的加減。但是對於計算機,加減乘數已經是最基礎的運算,要設計的盡量簡單。計算機辨別"符號位"顯然會讓計算機的基礎電路設計變得十分復雜。於是人們想出了將符號位也參與運算的方法。我們知道,根據運演算法則減去一個正數等於加上一個負數,即: 1-1 = 1 + (-1) = 0 , 所以機器可以只有加法而沒有減法,這樣計算機運算的設計就更簡單了。
於是人們開始探索將符號位參與運算,並且只保留加法的方法。
『捌』 原碼是怎麼算
原碼:在數值前直接加一符號位的表示法。
例如: 符號位=數值位
[-7]原=1 0000111 B
注意:a. 數0的原碼有兩種形式:
[+0]原=00000000B [-0]原=10000000B
b. 8位二進制原碼的表示範圍:-127~+127
編碼方式
原碼是有符號數的最簡單的編碼方式,便於輸入輸出,但作為代碼加減運算時較為復雜。
一個字長為n的機器數能表示不同的數字的個數是固定的2^n個,n=8時2^n=256;用來表示有符號數,數的范圍就是 -2^(n-1)-1 ~ 2^(n-1)-1,n=8時,這個范圍就是 -127 ~ +127。
但是在不需要考慮數的正負時,就不需要用一位來表示符號位,n位機器數全部用來表示是數值,這時表示數的范圍就是0~2^n-1,n=8時這個范圍就是0~255。
『玖』 補碼、原碼、反碼怎麼運算
原碼, 反碼和補碼的概念.對於一個數, 計算機要使用一定的編碼方式進行存儲. 原碼, 反碼, 補碼是機器存儲一個具體數字的編碼方式。原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值。反碼就是正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。補碼就是正數的補碼就是其本身,負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反。
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]補
對於負數,補碼表示方式也是人腦無法直觀看出其數值的。通常也需要轉換成原碼在計算其數值。