1樓:做而論道
在計算野租消機系統中,數字,一律採用補碼錶示和儲存。
八位補碼,與其代表數字的對應關係,如下表所示。
由圖可見,數字與補碼的轉換,十分簡單。
-頌知-二進位補碼移位:移動一位,就是乘(除)以二。
向左移位,型碼很簡單了。向右移位,就要保持最高位不變。
2樓:黑科技
最近學習c,感覺c確實比較接近底層,要多瞭解計算機基礎,這一門語言就一定不能錯過了,因為許多知識都從這裡延伸出來。
言歸正題,先說說機器數:
原碼/補碼/反碼之間的關係:
機器數:原碼與補碼。
對於正數而言,二進位數的原碼/反碼/補碼都是一樣的。
對於負數而言,其二進位數與原碼一樣,其反碼則是其二進位數逐位反轉(0轉為1,1轉為0)而成,其補碼則是反碼的基礎上加1
其中對於原碼/反碼和補碼而言模悄,其最高位中0代表正數,1代表負數。
使用補碼可使減法變加法(符號位參與運算)
說到位移運算,就必須有與、或、非、異或這幾個運算子,它們二進位運算中的運算子,以下時他們的規則:
就像規則一樣,只有全部時1的時候得到的結果才為1。示例:
當運算結果其中乙個為1時,結果就為1,當然,都是1的時候也是1示例:
若且唯若有乙個1的時候才為1,也就橋液是說只有1和0組合才為1示例:
將二進位逐位取反。示例:
瞭解這四個運算子很簡單,但是對於初學者而言,更重要的是其用法,如果不知道怎麼用,那麼這道這些運算子也沒什麼用。
與運算子通常用於掩碼,指的是一些設定為開(1)或管(0)的為組合。
在實際運用中,最常見的掩碼用法莫過於以下這種:
其中0xff的二進位形式為11111111,當乙個數與上0xff,那麼此數的最後8位將儲存不變(&運算規則決定),而其他數均會為0,也就是敏碼物說最終的值被改為1個8為位元組,這種用法是取位的某一段。
第二種用法是讓某些位或某一位為0,因為&運算的規則,只要給某些位上&上為0的數,那麼這一位就會為0,如上面的示例(10010011)&(00111101)=(00010001)
使乙個位或幾個位為1,如x|0x01,這樣不管x是什麼數,其結果的最後一位都會為1。
把兩個數拼起來,如0xff00 | 0x00ff
想得到全部位為1的數,如~0
移位運算分《左移和》 右移。
補碼二進位計算機為什麼要用補碼儲存整型,關於
3樓:做而論道
補碼的功能,類似於:
時針倒撥 3 小時,與正撥 9 小時,效果相同。
利用這種思路,計算機中的負數,也可以改為正數(即補碼)。
同時,減法運算,也就可以用加法代替了。
那麼,藉助於補碼,在計算機中,就沒有負數了,也沒有了減法運算。
由此就可以簡化演算法,從而簡化計算機的硬體。
十進位比較容易理解:
25 + 99 = 一百) 24。
只要忽略進位,+99 就能代替-1。
+99 就稱為-1 的補數。
在這裡用了 2 位 10 進位。
求補數的演算法:補數 = 負數 + 10^2。
通用的公式是:補數 = 負數 + 10^n。 n 是位數。
計算機用二進位,補數,就改名為:補碼。
乙個位元組,是 8 位 2 進位。
計數範圍是:0000 0000 ~ 1111 1111(十進位 255)。
計數週期是:2^8 = 256。
求補碼的演算法:負數的補碼 = 負數 + 2^n。
那麼:-1 的補碼=-1 + 256 = 255 = 1111 1111。
2 的補碼=-2 + 256 = 254 = 1111 1110。
例如用補碼計算如下:
[-2] 補 =
---相加---
得: (1)
捨棄進位,結果就完全正確。
藉助於補碼,負數就沒有了,從而就把「減法轉換為加法運算」。
補碼的**,與原碼反碼毫無關係。
「原碼反碼取反加。
一、符號位也能參加運算」..
這些,都沒有什麼理論依據。
從「原碼取反加一」開始學習補碼,就弄不清楚「為什麼用補碼」。
4樓:可軒
為了便於硬體邏輯電路的實現(高電平表示1,低電平表示0)計算機中的數值用機器數來表示及運算,而這個數本身稱作真值。
機器數包括:原碼、反碼、補碼、……
機器數用補碼錶示的好處:
原碼簡單,適用於乘除運算,但用原碼錶示的數進行加減法運算比較複雜。
補碼,減法運算可以用加法來實現,例如 [x-y]補 = x]補 +[y]補,補碼的符號位也可以參與運算,便於運算結果的正負及是否溢位判斷。
二進位運算為什麼要用補碼進行運算?
5樓:深空遊戲
計算機尺晌姿采用補碼數進行運算的原因:在計算機系統中,數值一律用補碼來表示和儲存。原因在於,陵絕使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。
在計算機系統中,資料,一律謹野採用補碼來表示和儲存。原因在於,使用補碼,可以將加法和減法統一處理。補碼,就是補碼,與原碼反碼毫無關係。
從原碼反碼開始學習,就不能理解「為何要用補碼?」。
就是為了:簡化硬體,省錢。因為,負數,是可以用乙個正數(補碼)代替的。
如:24-1=2324+99=(一百)23忽略進位,用+99就可以代替-1。+99,就是-1的補數。
計算機用二進位,就稱為:補碼。
二進位補碼計算
6樓:懂啦
一分鐘瞭解計算機與二進位。
7樓:網友
-29的8位二進位補碼是11100011,-25的8位二進位補碼是11100111,-29-25=-29+(-25)=11100011+11100111=11001010,這是-54的8位二進位補碼。
計算機二進位補碼
8樓:藺付友祭庚
8位的二進位補碼,可以表示-128~+127;
16位的二進位補碼,可以表示-32768~+32767。
實用的時候,一般就是從這兩種之中選擇一種。
8位的夠用了,就不要選16位的。
二進位補碼計算
9樓:懂啦
一分鐘瞭解計算機與二進位。
10樓:網友
-85:
求補:1010 1011
相加:1010 1011
結果為負數,16進製為f7,注意此結果為補碼,要得到十進位,要轉換過來。
進了一位,由於只有8位,故忽略,無溢位。
11樓:網友
-85=10101011
85+76=11110111 取反+1 =00001001=9 帶上符號位 為 -9 16進位 f7h
85-76=00001001 =9 16進位 09h
計算機為什麼選用二進位補碼
12樓:匿名使用者
1.總的概念數在計算機中是以二進位形式表示的;
數分為有符號數和無符號數;
原碼、反碼、補碼都是有符號定點數的表示方法;
無符號數全部按正數處理;
乙個有符號定點數的最高位為符號位,0是正,1是負;
2.反碼,補碼定義。
正數:原碼=反碼=補碼。
負數:原碼。
反碼=其原碼除符號位之外的各位求反。
補碼=反碼+1 (如果+1之後有進位的,要一直往前進位,包括符號位)3.運算示例。
正零:00000000
負零:10000000
這兩個數其實都是0,但他們的原碼卻有不同的表示。
但是他們的補碼是一樣的,都是00000000特別注意,如果+1之後有進位的,要一直往前進位,包括符號位!(這和反碼是不同的!)
10000000]補。
10000000]反+1
00000000(最高位溢位了,符號位變成了0)有人會問。10000000這個補碼錶示的哪個數的補碼呢?
其實這是乙個規定,這個數表示的是-128
所以n位補碼能表示的範圍是。
2^(n-1)到2^(n-1)-1
比n位原碼能表示的數多乙個。
又例:原碼:01011
反碼:01011 //正數時,反碼=原碼。
補碼:01011 //正數時,補碼=原碼。
原碼:11011
反碼:10100 //負數時,反碼為原碼取反。
補碼:10101 //負數時,補碼為原碼取反+1原碼:
反碼: //正數時,反碼=原碼。
補碼: //正數時,補碼=原碼。
原碼:反碼: //負數時,反碼為原碼取反。
補碼: //負數時,補碼為原碼取反+1
4.幾個特殊定義:
n位補碼能表示的範圍:有符號數是 -2^(n-1)到2^(n-1)-1 無符號數是 0-2^n-1
128的補碼是10000000, -128+1=-127 ,(127)補=10000001=10000000+00000001 符合運算規則。
0的補碼00000000
13樓:沙裡波特
廠家,不願意生產十進位的計算機。
樓主自己投資建個廠,就可以不用二進位補碼了。
14樓:做而論道
計算機,只能使用二進位。
使用補碼,就能夠用加法,代替減法運算。
這樣一來,計算機只需配置乙個加法器,就夠用了。
計算機二進位制補碼求和1101,計算機二進位制補碼求和1101,
正數的原反補都一樣,0011 原 1101 補,兩者相加為0 二進位制補碼怎麼計算的 1 正數的補碼錶示 正數的補碼 原碼 負數的補碼 or 以十進位制整數 97和 97為例 97原碼 0110 0001b 97補碼 0110 0001b 97原碼 1110 0001b 97補碼 1001 1111...
2進位制問題,計算機二進位制問題?
十進位制是逢十進一,二進位制是逢二進一,計算機只有0和1兩種狀態,所以只能用二進位制,十進位制,每一位有十種狀態,1,2,3,4,5,6,7,8,9,0。當有第十一種狀態就進一位,用二位數表示,如1 9 10,而二進位制每一位只有二種狀態,當有第三種狀態就進一位,用二位數表示,如000表示0,001...
二進位制的與計算怎麼算,二進位制數的與運算是相加,那麼或運算怎麼算?比如110000010和10100110進行或運算等於?
二進位制的計算資料是用0和1兩個數碼來表示的數。基數為2,進位規則是 逢二進一 借位規則是 借一當二 計算機中的二進位制是一個非常微小的開關,用 開 來表示1,關 來表示0。二進位制的計算分為五種 1 加法有四種情況 0 0 0,0 1 1,1 0 1,1 1 10,0進位為1。2 乘法有四種情況 ...