資料寬度和邏輯運算

2022-03-27 15:17:26 字數 1515 閱讀 9750

1.資料的寬度

計算機以二進位制的形式儲存資料;

在計算機中由於受到硬體的制約,所存的資料長度會有限制;

超過最大寬度的資料會被丟棄;

例如:4位寬度表示計算機最多只能儲存4位二進位制數;

計算機儲存的相同的二進位制數可以被根據需要當成有符號數和無符號數;

比如資料寬度為4時,可儲存16個數;

如果把這些數當做無符號數,也就是不考慮負數,可儲存0~f,當f+1時,由於寬度不夠,被捨棄高位,所得的值為0;

如果當做有符號數,會將16個數分成兩部分,一半存正數一半存負數,0~7用來表示正數,8~f用來表示負數;

0是最小的正數,f是最大的負數;因為f+1=0;

也就是說f表示-1,以此類推e=-2,d=-3,c=-4...

總之,計算機只儲存特定的二進位制數,而將這個數當做有符號或無符號數是使用該資料的人來決定的;

2.邏輯運算

計算機中有4中基本的邏輯運算:或、與、異或、非

例如:計算機實現2+3的原理

#計算機是如何計算2+3的

2+3=?

#計算機只認識二進位制數,將兩個數存入兩個容器x,y

2    ->0010;

3    ->0011;

x=0010

y=0011

#先給x、y兩個數做異或運算,並將結果儲存在乙個容器r中

0010

xor    0011

----------------

0001

r=0001

#cpu判斷是否算完;

#判斷算完的標誌是:讓兩個數x,y先與運算,所得的結果左移一位;結果是0則r就是結果;

0010

and    0011

----------------

0010

0010<<1=0100

0100 !=0000所以結果不是r即0001

#如果沒得到結果,把上次異或得到的值r賦值給x;把上次與的結果左移一位的值賦值給y;

x=0001

y=0100

#然後又開始給x和y做異或運算了

0001

xor    0100

--------------

0101

r=0101

#給x、y做與運算,和前面一樣

0001

and    0100

---------------

0000

0000<<1 ==0

#因為兩個數與運算的結果為0,因此cpu判斷已經計算完成,而所得的結果即此時r的值

r=0101

#轉成十進位制

r=5#也就是結果:2+3=5    

1)使用邏輯運算獲取資料的某一位

例如獲取 1011的第2位:1011 & 0100

2)利用異或的簡單加密

原理:乙個數與特定的數兩次異或會得到相同的值,可以將特定的數作為金鑰來用異或加密;

例如:簡單的加密

邏輯運算和位運算

本文主要針對的是邏輯運算 和位運算 關於移位預算,現在對開發來說基本不用,就不說了。邏輯運算主要是針對多個boolean表示式來說的,即a 1 b 2這種,就是說邏輯運算子左右都是boolean型別的表示式,這裡!是個特例,它是一元運算子,只對右邊boolean表示式取反,即!ture 變成了fal...

位運算和邏輯運算

public class test private static int j 0 private static boolean methodb int k j k return true public static void methoda int i methoda 0 system.out.pr...

位運算和邏輯運算

正數負數 原碼符號位為0 符號位為1 補碼原碼 符號位不變,其他取反 反碼原碼 補碼 1 比如說 5的原碼 00000000 00000000 00000000 00000101 5的原碼 10000000 00000000 00000000 00000101 5的反碼 00000000 00000...