移位運算 二

2021-09-19 23:52:11 字數 746 閱讀 9626

對於乙個位表示為 [ xw-1, xw-2, … , x0 ] 的運算元, x << k 會生成乙個值, 其位表示為 [ xw-k-1, xw-k-1, … , x0, 0 , … , 0 ] , 也就是說, x向左移動k位, 丟棄最高的k位, 並在右端補 k 個0.

右移一般指算術右移, 即x >> k, 是指乙個位表示為 [ xw-1, xw-2, … , x0 ] 右移後, 其位表示為 [ xw-1, … , xw-1, xw-1, xw-2 , … , xk ] , 右端丟棄k個位, 並在左端補 k 個最高有效位的值. 這對有符號整數運算非常有用.

又稱無條件右移, 是指乙個位表示為 [ xw-1, xw-2, … , x0 ] 的運算元, x >>> k 會生成乙個值, 其位表示為 [ 0, … , 0 , xw-1, xw-2 , … , xk ] , x向右移動k位, 右端丟棄最低的k個位, 並在左端補 k 個0.

對整數進行左移操作時, 可能會改變符號.

移位運算優先順序低於加減法.

一般來說, 0≤k

0 \leq k

0≤k≤

w\leq w

≤w, 若 k

>

wk \gt w

k>

w, 則移動量為 k mod w 即可.

如w=32, 則a << 32 , a >> 36 , a >> 40 等價於 a , a >> 6 , a >> 8.

右移常用應用如取指定一段位的值. 如: 取5~8位的值, a >>> 4 & 0xf

java 移位運算

移位運算子就是在二進位制的基礎上對數字進行平移。按照平移的方向和填充數字的規則分為三種 左移 帶符號右移 和 無符號右移 在移位運算時,byte short和char型別移位後的結果會變成int型別,對於byte short char和int進行移位時,規定實際移動的次數是移動次數和32的餘數,也就...

C C 移位運算

c c 移位運算 一 移位運算子及其規則 移位運算子就是在二進位制的基礎上對數字進行平移,是在補碼的基礎上進行操作的。按照平移的方向和填充數字的規則分為三種 左移 帶符號右移 無符號右移 左移運算子的規則 1 int型別數值實際移位的次數是和32的餘數,移位33次和移位1次得到的結果相同 例如int...

移位運算練習

1 統計乙個整數n表示為二進位制後,1的個數 2 統計兩個整數m,n,將m轉化為n需要改變的位數 3 將乙個整數n的i到j位替換為m。1 思路 每次將n減去1再做與運算,將n最右邊的數由1變為0,那麼乙個數中有多少個1,就需做多少次這樣的運算,n n n 1 直到n 0。2 思路 先將兩個數做異或運...