Hive中的算術運算符:位運算符解釋

Hive中的位運算符運用不多,可能大部分人也不少很熟悉,其實就是將兩個數值轉爲位相應的二進制,在相應位上進行與、或、反、異或操作:

1. 位與操作: &
語法: A & B
操作類型:所有數值類型
說明:返回A和B按位進行與操作的結果。結果的數值類型等於A的類型和B的類型。
舉例:
hive> select 4 & 8 from t_fin_demo;
        0

解釋:  4的二進制:0100

             8的二進制:1000

 4和8按位取與操作:0000(最高位0和1取與是0,次高位1和0取與是0,後面兩位0和0取與都是0)
2. 位或操作: |
語法: A | B
操作類型:所有數值類型
說明:返回A和B按位進行或操作的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關係)。
舉例:
hive> select 4 | 8 from t_fin_demo;
        12

解釋:   4的二進制:0100

             8的二進制:1000

 4和8按位取或操作:1100(最高位0和1取與是1,次高位1和0取與是1,後面兩位0和0取或都是0)

3. 位異或操作: ^(如果位上a、b兩個值不相同,則異或結果爲1。如果a、b兩個值相同,異或結果爲0)
語法: A ^ B
操作類型:所有數值類型
說明:返回A和B按位進行異或操作的結果。
舉例:
hive> select 4 ^ 8 from t_fin_demo;
        12

解釋:   4的二進制:0100

             8的二進制:1000

 4和8按位取或操作:1100(最高位0和1取異或是1,次高位1和0取異或是1,後面兩位0和0取異或都是0)


4.位取反操作: ~
語法: ~A
操作類型:所有數值類型
說明:返回A按位取反操作的結果。結果的數值類型等於A的類型。
舉例:
hive> select ~6 from t_fin_demo;
           -7

解釋:   6的二進制:00000110(因爲數值較小,假設位8位,實際上一般位64位或者32位)

6按位取反的二進制:11111001(最高位上1,表示上個負數),該二進制都負數計算如下:

11111001減1,得11111000,然後安慰取反00000111,該二進制加-號就上原二進制轉化爲十進制都值,即-7。

 

 

發佈了18 篇原創文章 · 獲贊 12 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章