計算機的位運算小結

2022-02-04 02:59:40 字數 2493 閱讀 4962

補碼:

負數是以補碼的形式表示,其轉換方式:先按正數轉換,然後取反加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盤 ...