計算機加減乘除運算原理

2021-08-30 13:10:36 字數 1842 閱讀 4481

計算機加減乘除運算原理

加減法原理

原碼,反碼,補碼

十進位制

原碼(符號位+真數)

反碼(符號位不變)

補碼(符號位不變)

85(正數)

0101 0101

0101 0101(正數:本身)

0101 0101(正數:本身)

-85(負數)

1101 0101

1010 1010(負數:非符號位取反)

1010 1011(負數:反碼+1)

原碼運算:如下圖,原碼運算對於負數參與的運算是不正確的,但是兩個正數相加則正常;

反碼運算:真數部分是正確的,但是對於0出現了[0000 0000]原和[1000 0000]兩種編碼;

補碼運算:使用[1000 0000]代表-128,同時-128不存在原碼

使符號位以及真數同時參與運算;

可以把減法運算變成加法運算;而乘法可以用加法來做,除法可以轉變成減法。

如下圖,補碼運算的最高位溢位情況下,其他位的結果正好為資料的運算結果

乘法

原理:計算機數值都是用2的n次方來表示的2^n0+2^n1+2^n2+2^n3+2^n4......

x*y=

(x)*(2^n0+2^n1+2^n2+2^n3+2^n4)

=(x*2^n0)+(x*2^n1)+(x*2^n2)+(x*2^n3)+(x*2^n4)+...... =

(x左移n0)+(x左移n1)+(x左移n2)+(x左移n3)+(x左移n4)+......

例項15(x)*13(y),即1111*1101

a.首先y的最低位為1(2^0),x左移0位得到1111

b.然後y的最低第二位為0,沒有2^1存在,因此本次無運算

,得到為

0c.然後y的最低第三位為1(2^2),x左移2位得到111100

d.然後y的最低第四位為1(2^3),x左移3位得到1111000

e.把a、b、c、d的結果相加1111+0+111100+1111000=11000011(195),該結果就是乘法的結果

除法

原理

左移運算。符號位不參與運算

例項:51/3

大小比較

真數從高位到低位比較,符號位單獨比較

移位運算

<< : 左移運算子,num << 1,相當於num乘以2

如:0000 0010 左移2位為 0000 1000  ;從2變為16

>> :右移運算子,num >> 1,相當於num除以2

如:0000 1000 右移2位為 0000 0010,從16變為2

計算機實現加減乘除

計算機是怎麼操作的!0000 0100 0000 0101 加法 計算機是不會直接加的 0000 1001 計算機的實現原理 第一步 異或運算 不一樣等於1 0000 0100 0000 0101 0000 0001 第二步 與運算 都是1等於1 目的是判斷是否有進製,如果與運算結果為0,則沒有進製...

大數運算(加減乘除)

加法 void add char a,char b,char d for i len i 1 i if c i 48 len else break for i 0 i len i d i c len i view code 減法1 d2 d1,如果需要比較大小自己加乙個不麻煩。void dec ch...

位運算加減乘除

按位異或 按位與 按位或 計算機系統中,數值一律用補碼來表示 因為補碼可以使符號位和數值位統一處理,同時可以使減法按照加法來處理。對補碼做簡單介紹 數值編碼分為原碼,反碼,補碼,符號位均為0正1負。原碼 補碼 數值位取反加1 補碼 原碼 對該補碼的數值位繼續 取反加1 補碼 的絕對值 稱為真值 正數...