補碼:
負數是以補碼的形式表示,其轉換方式:先按正數轉換,然後取反加1。
要將十進位制的-10用二進位制表示,先將10用二進位制表示:0000
0000
0000
1010
取反:1111
1111
1111
0101
加1:1111
1111
1111
0110所以-10的二進位制為:1111
1111
1111
0110
按位與(&):
把兩個數轉為二進位制,只有當相應位上的數都是1時,該位才取1,否則該為為0。
將10與-10進行按位與(&)運算:0000
0000
0000
1010
1111
1111
1111
0110
-----------------------
0000
0000
0000
0010
所以:10 & -10 = 0000
0000
0000
0010
按位或(|):
把兩個數轉為二進位制,只要相應位上存在1,那麼該位就取1,均不為1,即為0。
將10與-10進行按位或(|)運算:0000
0000
0000
1010
1111
1111
1111
0110
-----------------------
1111
1111
1111
1110
所以:10 | -10 = 1111
1111
1111
1110
按位異或(^)
把兩個數轉為二進位制,只有當相應位上的數字不相同時,該為才取1,若相同,即為0。可以理解為不進製的加法
將10與-10進行按位異或(^)運算:0000
0000
0000
1010
1111
1111
1111
0110
-----------------------
1111
1111
1111
1100
所以:10 ^ -10 = 1111
1111
1111
1100
取反(~)
每個位上都取相反值,1變成0,0變成1。
對10進行取反(~)運算:0000
0000
0000
1010
---------------------
1111
1111
1111
0101
所以:~10 = 1111
1111
1111
0101
左移(<<)
用來將乙個數各二進位制位全部向左移動若干位。
對10左移2位(就相當於在右邊加2個0):0000
0000
0000
1010
--------------------
0000
0000
0010
1000
所以:10
<< 2 = 0000
0000
0010
1000 = 40
右移(>>)
用來將乙個數各二進位制位全部向右移動若干位。
對10右移2位(就相當於在左邊加2個0):0000
0000
0000
1010
--------------------
0000
0000
0000
0010
所以:10 >> 2 = 0000
0000
0000
0010 = 2
其實這裡面最有意思的屬於異或了,
比如有兩組數,其中一組比另一組多出來乙個數,如何找到這個數,用異或處理最簡單,所有數^ 最後剩下的就是多出來的數!
左移和右移
左移(<<1)相當於*2、右移(>>1)相當於/2
談計算機程式設計的位運算技巧
位操作是程式設計中對位模式按位或二進位制數的一元和二元操作。大部分程式語言都提供了這幾種運算子 1.按位與 2.按位或 3.按位異或 4.取反 5.左移 6.右移。位運算一般都是用整形數字來進行,浮點數二進位制是由定點數跟基數組成,位運算結果沒意義。int main int argc,const c...
計算機編碼小結
本文為基於python語言的計算機編碼方式小結,內容參考自 由於計算機內只能存放二進位制數字,當我們需要存放字元 阿拉伯數字 中文等等,就必須將每個字元轉化為乙個二進位制數字序列,存入計算機,而將字元轉化為二進位制序列的過程,就叫做編碼。目前為止,我們了解到三種計算機編碼方式 ascii,unico...
計算機基礎小結
程式語言是人與計算機交流的介質。程式設計就是使用程式語言編寫成乙個個的計算機可以識別的檔案 為了奴役計算機,解放勞動力,幫助人類完成乙個個任務。2.1.1.1控制器 控制硬體 2.1.1.2 運算器 進行邏輯運算 算術運算 臨時儲存資料的硬體 永久儲存資料的硬體 輸入資訊的硬體,如鍵盤 滑鼠 u盤 ...