二進制和位運算符


最近,准備學數學基礎,so我覺得了解一下二進制和位運算符是很有用的。

二進制

先看看度娘怎么說

 

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

 

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

 

(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

 

 

位運算符

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

 

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

 

定義什么的都不重要,直接上操作

 

按位與運算

 

按位與運算符"&"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為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 //以此類推

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM