二進制和位運算符

最近,準備學數學基礎,so我以爲了解一下二進制和位運算符是頗有用的。spa

二進制設計

先看看度娘怎麼說code

 

二進制是計算技術中普遍採用的一種數制二進制數據是用0和1兩個數碼來表示的數。它的基數爲2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個很是微小的開關,用「開」來表示1,「關」來表示0。orm

 

其實就是用「1」和「0」來表示數,二進制和十進制的轉換也是挺有用的,度娘講的就挺好。blog

 

(1)二進制轉十進制

 

方法:「按權展開求和」

 

【例】:

 

規律:個位上的數字的次數是0,十位上的數字的次數是1,......,依次遞增,而十

 

分位的數字的次數是-1,百分位上數字的次數是-2,......,依次遞減。

 

注意:不是任何一個十進制小數都能轉換成有限位的二進制數。

 

 

· 十進制整數轉二進制數:「除以2取餘,逆序排列」(除二取 餘法

 

【例】:

 

89÷2 ……1

 

44÷2 ……0

 

22÷2 ……0

 

11÷2 ……1

 

5÷2 ……1

 

2÷2 ……0

 

1

 

· 十進制小數轉二進制數:「乘以2取整,順序排列」(乘2取整法)

 

【例】: (0.625)10= (0.101)2

 

0.625X2=1.25 ……1

 

0.25 X2=0.50 ……0

 

0.50 X2=1.00 ……1

 

 

位運算符get

OK,接下來看一看位運算符。數學

 

位操做是程序設計中對位模式按位或二進制數的一元和二元操做。  //來自度娘
it

 

定義什麼的都不重要,直接上操做form

 

按位與運算

 

按位與運算符"&"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均爲1時,結果位才爲1 ,不然爲0。參與運算的數以補碼方式出現。程序設計

 

1 9&5
2    00001001     //9的二進制補碼
3 &  00000101     //5的二進制補碼
4 =  00000001     //1的二進制補碼

 

按位或運算

按位或運算符「|」是雙目運算符。 其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個爲1時,結果位就爲1。參與運算的兩個數均以補碼出現。
1 9|5
2    00001001     //9的二進制補碼
3 |  00000101     //5的二進制補碼
4 =  00001101 

按位異或運算

按位異或運算符「^」是雙目運算符。 其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果爲1。參與運算數仍以補碼出現。
1 9^5
2    00001001
3 ^  00000101
4 =  00001100

 

求反運算

求反運算符~爲單目運算符,具備右結合性。 其功能是對參與運算的數的各二進位按位求反。
1 ~(1001)
2 = 0110

[敲黑板]重點來了,最經常使用的兩種位運算符

左移運算

左移運算符「<<」是雙目運算符。左移n位就是乘以2的n次方。 其功能把「<<」左邊的運算數的各二進位所有左移若干位,由「<<」右邊的數指定移動的位數,高位丟棄,低位補0。(x<<n == x*2^n)

右移運算

右移運算符「>>」是雙目運算符。右移n位就是除以2的n次方。其功能是把「>>」左邊的運算數的各二進位所有右移若干位,「>>」右邊的數指定移動的位數。(x>>n == x/2^n)
 
1 x<<1   //至關於x*2
2 x>>1   //至關於x/2
3 x<<2   //至關於x*4
4 x>>2   //至關於x/4
5 //……
6 //以此類推

 

相關文章
相關標籤/搜索