1樓:匿名使用者
42(10)=101010(2) -42(10)原始碼= 1(符號位 1代表負;0代表正) 0(不足7位補0)101010 反碼= 1(符號位無需變反) 1010101(數值位變反) 補碼= 1 1010110(二進位制加一) 1010101 +0000001 ------------- 1010110 1+1=10(進一) 1+0=1 0+0=0
一個數的原碼,反碼,補碼怎麼算?
2樓:匿名使用者
計算機中的儲存系統都是用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等其他高階語言中使用的都是原碼
3樓:卓姮節悠
舉例說明如下:
真值-11d
=-1011b
,若字長8位,
則:[-11d]原
=10001011b
,最高位是符號位,1表示負數,其餘為數值位[-11d]反
=11110100b
,將原碼除符號位之外的各位取反得反碼
[-11d]補
=11110101b
,將反碼末位加1得補碼
d是十進位制數字尾
,b是二進位制數字尾
若是正數,無須上述操作。原碼=反碼=補碼=真值,例如:
真值20d
=10100b,
若用8位字長機器數表示,則:
[20]原
=[20]反
=[20]補
=00010100b
最高位是符號位,0表示正數,符號右側用兩個0補齊8位
4樓:prince致匠園藝
補碼的運算:聽老師講解真值、原碼、反碼和補碼
5樓:沙裡波特
不用算。
有個定義式,直接就能求出來。
不用互相的算。
什麼是一個數的原碼,反碼,補碼??
6樓:匿名使用者
基本概念
在計算機內部表示二進位制數的方法稱為數值編碼,把一個數及其符號在機器中的表示加以數值化,稱為機器數。機器數所代表的數稱為數的真值。 表示一個機器數,應考慮以下三個因素:
1.機器數的範圍
字長為8位,無符號整數的最大值是(11111111)b=(255)d,此時機器數的範圍是0~255。
字長為16位,無符號整數的最大值是
(1111111111111111)b=(ffff)h=(65535)d 此時機器數的範圍是0~65535。
2.機器數的符號
在算術運算中,資料是有正有負的,將這類資料稱為帶符號數。
為了在計算機中正確地表示帶符號數,通常規定每個字長的最高位為符號位,並用0表示正數,用1表示負數。
3.機器數中小數點的位置
在機器中,小數點的位置通常有兩種約定:
一種規定小數點的位置固定不變,這時的機器數稱為「定點數」。
另一種規定小數點的位置可以浮動,這時的機器數稱為「浮點數」。
4.原碼
正數的符號位為0,負數的符號位為1,其它位按照一般的方法來表示數的絕對值。用這樣的表示方法得到的就是數的原碼。
【例1】當機器字長為8位二進位制數時:
x=+1011011 [x]原碼=01011011
y=+1011011 [y]原碼=11011011
[+1]原碼=00000001 [-1]原碼=10000001
[+127]原碼=01111111 [-127]原碼=11111111
原碼錶示的整數範圍是:
-(2n-1-1)~+(2n-1-1),其中n為機器字長。
則:8位二進位制原碼錶示的整數範圍是-127~+127
16位二進位制原碼錶示的整數範圍是-32767~+32767
5.反碼
對於一個帶符號的數來說,正數的反碼與其原碼相同,負數的反碼為其原碼除符號位以外的各位按位取反。【例2.14】當機器字長為8位二進位制數時:
x=+1011011 [x]原碼=01011011 [x]反碼=01011011
y=-1011011 [y]原碼=11011011 [y]反碼=10100100
[+1]反碼=00000001 [-1]反碼=11111110
[+127]反碼=01111111 [-127]反碼=10000000
負數的反碼與負數的原碼有很大的區別,反碼通常用作求補碼過程中的中間形式。 反碼錶示的整數範圍與原碼相同。
6.補碼
正數的補碼與其原碼相同,負數的補碼為其反碼在最低位加1。
【例2】(1)x=+1011011 (2) y=-1011011
(1)根據定義有: [x]原碼=01011011 [x]補碼=01011011
(2) 根據定義有: [y]原碼=11011011 [y]反碼=10100100
[y]補碼=10100101
補碼錶示的整數範圍是-2n-1~+(2n-1-1),其中n為機器字長。
則:8位二進位制補碼錶示的整數範圍是-128~+127
16位二進位制補碼錶示的整數範圍是-32768~+32767
當運算結果超出這個範圍時,就不能正確表示數了,此時稱為溢位。
7.補碼與真值之間的轉換
正數補碼的真值等於補碼的本身;負數補碼轉換為其真值時,將負數補碼按位求反,末位加1,即可得到該負數補碼對應的真值的絕對值。
【例3】[x]補碼=01011001b,[x]補碼=11011001b,分別求其真值x。
(1)[x]補碼代表的數是正數,其真值:
x=+1011001b
=+(1×26+1×24+1×23+1×20)
=+(64+16+8+1)
=+(89)d
(2)[x]補碼代表的數是負數,則真值:
x=-([1011001]求反+1)b
=-(0100110+1)b
=-(0100111)b
=-(1×25+1×22+1×21+1×20)
=-(32+4+2+1)
=-(39)d
7樓:匿名使用者
正數的原始碼 反碼 補碼一樣的 就是轉位二進位制負數原始碼就是二進位制碼
反碼就是1變0 0變1
補碼就是反碼加1
計算機中位位元組字字長的含義是什麼
1.位或位元 bit 一個電子線路單元稱為一個 位 bit 它有兩個穩定回的工作狀態,分別答以 0 和 1 表示。是計算機中最小的資料單位。2.位元組 byte 8位二進位制數稱為一個 位元組 byte,簡寫b 它是計算機儲存資訊的基本單位,也是計算機儲存空間大小的最基本容量單位。3.字 word ...
計算機位和位元組的關係?比如說16位的計算機對應的位元組數是2的
一個位元組對應8bit,即是你所說的一位,16位的計算機對應的位元組數是2的16次方 其實就是一個定址的問題,本質就是16bit可以表示2的16次方種不同的數嗎,所以對應2的16次個地址。或者是2的16次個儲存單元,每一個儲存單元有8bit,所以最後的位數就是2的16次方再乘以8。當然如果一個儲存單...
請問 為什麼計算機能識別機器語言
二進位制是逢二進一 注 如 2 表示2的2次方,2 表示2的5次方 1.二進位制計數法的概念 人們在日常生活中和生產實踐中,我們接觸到越來越多的數字,創造了分組計數的制度.而我們的生活中,一般採用了 滿十進一 的十進位制計數法,我們現在已經熟悉並經常運用這一種計數法了.但也有采用其他計數法.如二進位...