運算子分為6種,它們是
名稱符號
按位與&
按位或|
按位異或
^按位取反
~左移運算
<<
右移運算
>>
按位與運算將參與運算的兩數對應的二進位制位相與,當對應的二進位制位均為 1 時,結果位為 1,否則結果位為 0。按位與運算的運算子為 &,參與運算的數以補碼方式出現。舉個例子,將數字 5 和數字 8 進行按位與運算,其實是將數字 5 對應的二進位制 0000 0101 和數字 8 對應的二進位制 0000 1000 進行按位與運算,即:
0000
0101
&0000
1000
----
----
0000
0000
按位或運算將參與運算的兩數對應的二進位制位相或,只要對應的二進位制位中有 1,結果位為 1,否則結果位為 0。按位或運算的運算子為 |,參與運算的數以補碼方式出現。舉個例子,將數字 3 和數字 7 進行按位或運算,其實是將數字 3 對應的二進位制 0000 0011和數字 7 對應的二進位制 0000 0111 進行按位或運算,即:
0000
0011
|0000
0111
----
----
0000
0111
按位異或運算將參與運算的兩數對應的二進位制位相異或,當對應的二進位制位值不同時,結果位為 1,否則結果位為 0。按位異或的運算子為 ^,參與運算的數以補碼方式出現。舉個例子,將數字 12 和數字 7 進行按位異或運算,其實是將數字 12 對應的二進位制 0000 1100 和數字 7 對應的二進位制 0000 0111 進行按位異或運算,即:
0000
1100
^0000
0111
----
----
0000
1011
按位取反運算將二進位制數的每乙個位上面的 0 換成 1,1 換成 0。按位取反的運算子為 ~,參與運算的數以補碼方式出現。舉個例子,對數字 9 進行按位取反運算,其實是將數字 9 對應的二進位制 0000 1001 進行按位取反運算,即:
~0000
1001
=0000
1001 # 補碼,正數補碼即原碼
=1111
1010 # 取反=-
10
其中包含著乙個規律,可以用數學公式表示
~x = -(x+1)
左移運算將數對應的二進位全部向左移動若干位,高位丟棄,低位補 0。左移運算的運算子為 <<。舉個例子,將數字 5 左移 4 位,其實是將數字 5 對應的二進位制 0000 0101 中的二進位向左移動 4 位,即:
5
<<4=
0000
0101
<<4=
0101
0000 # 高位丟棄,低位補 0
=80
左移運算的規律為
x << n = x(2)^n
右移運算將數對應的二進位全部向右移動若干位。對於左邊的空位,如果是正數則補 0,負數可能補 0 或 1 (turbo c 和很多編譯器選擇補 1)。右移運算的運算子為 >>。舉個例子,將數字 80 右移 4 位,其實是將數字 80 對應的二進位制 0101 0000 中的二進位向右移動 4 位,即:
80
>>4=
0101
0000
>>4=
0000
0101 # 正數補0,負數補1
=5
右移運算的規律為
x >> n = x / (2)^n
要注意的是,不能整除時,取整數。
5分鐘了解docker
一 概念 開源的應用容器引擎,打包開發者的應用及依賴包在乙個可移植的容器中,相當於沙箱。docker允許開發人員在單個作業系統上隔離和執行多個應用程式,而不是為伺服器上的每個應用程式專用乙個虛擬機器。這是通過將應用程式隔離在單獨的容器中來實現的,這些應用程式雖然被容器分隔開,但是卻可以共享作業系統和...
5分鐘了解MariaDB建立角色功能
part1 grant role?建立角色,oracle很早就支援建立角色的功能了,而版本依然尚不支援。目前,只有 版本裡支援建立角色這項功能。part2 為什麼我們需要角色 1.在實際工作中,有大量的使用者其許可權是一樣的,比如唯讀許可權。如果每次在建立完使用者後,dba再去對每個使用者去分別授權...
5分鐘了解折半插入排序
5分鐘了解折半插入排序 前言折半插入排序 binary insertion sort 是對直接插入排序演算法的一種改進。插入排序思想介紹 折半插入排序與直接插入排序演算法原理相同。只是,在向已排序的資料中插入資料時,採用來折半查詢 二分查詢 先取已經排序的序列的中間元素,與待插入的資料進行比較,如果...