在學(xué)習(xí)按位與運(yùn)算之前先了解一下位運(yùn)算,位運(yùn)算是將某個十進(jìn)制數(shù)字轉(zhuǎn)化為二進(jìn)制,然后再根據(jù)不同的運(yùn)算規(guī)則進(jìn)行運(yùn)算。
例如:
1:0001
5:0101
3:0011
16:10000
32:100000
將數(shù)字轉(zhuǎn)化為二進(jìn)制后進(jìn)行與操作,對應(yīng)數(shù)字分別與運(yùn)算;相當(dāng)于乘法,只有兩個1進(jìn)行計算時結(jié)果才為1,其它情況與運(yùn)算結(jié)果都為0。
計算方法:
第一位 | 第二位 | 結(jié)果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
5 & 4 = 0101 & 0100 = 0100 = 4
5: 0 1 0 1
&
4: 0 1 0 0
= 0 1 0 0
5 & 4 = 4
5 & 3 = 0101 & 0011 = 0001 = 1
5: 0 1 0 1
&
3: 0 0 1 1
= 0 0 0 1
5 & 3 = 1
按位或運(yùn)算:|按位或運(yùn)算,在運(yùn)算過程中只要兩個數(shù)字有任意一個是1,則結(jié)果就為1
計算方法:
第一位 | 第二位 | 結(jié)果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
5 | 3 = 0101 | 0011 = 0111 = 7
5: 0 1 0 1
&
3: 0 0 1 1
= 0 1 1 1
5 & 3 = 7
異或運(yùn)算:^異或運(yùn)算,相同的兩個數(shù)結(jié)果為0,相異結(jié)果為1
計算方法:
第一位 | 第二位 | 結(jié)果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
5: 0 1 0 1
&
3: 0 0 1 1
= 0 1 1 0
5 & 3 = 6
左移運(yùn)算:<<左移操作 x<< i 表示 數(shù)字x向左移動 i 位,低位補(bǔ)0.
例如:8<< 2 表示將8向左移動2位,底位補(bǔ)0.
計算過程:
8:1 0 0 0
向左移動兩位,低位補(bǔ)零 1 0 0 0 0 0 = 32
簡單理解:左移就是乘法,x<< i 相當(dāng)于x * 2 ^ i.
某個值乘以2的i次冪:8 * 2^2 = 32.
右移運(yùn)算:>>右移操作x >>i 表示 數(shù)字x向右移動 i 位,高位補(bǔ)0.
例如:8 >>2 表示將8向右移動2位,高位補(bǔ)0.
計算過程:
8:1 0 0 0
向右移動兩位,高位補(bǔ)零 0 0 1 0
簡單理解:右移就是除法,x >>i 相當(dāng)于x / (2 ^ i).
某個值除以2的i次冪:8 / (2^2) = 2.
無符號右移運(yùn)算:>>>無符號右移操作 x >>>i 表示數(shù)字x向右移動 i 位,高位補(bǔ)0.
例如:8 >>>2 表示將8向右移動2位,高位補(bǔ)0.
計算過程:
8:1 0 0 0
向右移動兩位,高位補(bǔ)零 0 0 1 0
簡單理解:右移就是除法,x >>i 相當(dāng)于x / (2 ^ i).
某個值除以2的i次冪:8 / (2^2) = 2.
細(xì)心的同學(xué)會發(fā)現(xiàn),右移運(yùn)算與無符號右移運(yùn)算結(jié)果沒有任何區(qū)別,計算方法也沒有區(qū)別。沒錯!右移運(yùn)算和無符號右移運(yùn)算在正數(shù)計算過程中相同,它兩個的主要區(qū)別在于對負(fù)數(shù)的計算不同,對于負(fù)數(shù)的運(yùn)算操作歡迎大家評論區(qū)留言。后續(xù)我會將負(fù)數(shù)操作整理。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧