C 用位運算實現迴圈移位

2021-07-01 22:09:07 字數 460 閱讀 2534

**:

迴圈移位區別於一般移位的是移位時沒有數字的丟失。

迴圈左移時,用從左邊移出的位填充字的右端。

迴圈右移時,用從右邊移出的位填充字的左側。

這種情況在系統程式中時有使用,在一些控制程式中用得也不少。

例如:a = 01111011,迴圈左移2位的正確結果是: b=11101101

b = a >> (8 - 2);  //用來得到正常左移丟失的位和迴圈移位後其正確位置  //b=00000001;

a = a << 2;  //a = 11101100

a = a | b;  //a = 11101101

如果不是用中間變數 a=(a>>(8-2))|(a<<2)

通用:總長度n(8 16 32)

迴圈左移n (a >> (n - n)) | (a << n)

迴圈右移n (a << (n - n)) | (a >> n)

位運算與移位運算

位運算指的是進行二進位制位的運算 位運算子說明 取反 按位與 按位或 按位異或 左移運算子,左移一位等於乘二 右移運算子,右移一位相當於除2取商 按位取反 按位與 按位或 按位異或的 執行操作 int a 7 0111 int b 8 1000 system.out.println a b 按位與結...

位運算 移位運算子

一 位 bit 運算子 位運算子 運算子含義 與 and 或 or 異或 取反 規則 可以把1當做true 0當做false 只有參與運算的兩位都為1,運算的結果才為1,否則就為0。只有參加運算的兩位都是0,運算的結果才是0,否則都是1。只有參加運算的兩位不同,運算的結果才為1,否則就為0。1 與運...

陣列迴圈移位(m位)

看到這個題目,一般是先實現題目意思再說,一般我們按照正常思路解題,將陣列元素迴圈右移,比如abcd1234,假若迴圈四位,就是4abcd123 34abd12 234abcd1 1234abcd,這樣的話 很簡單 1 2 3 4 5 6 7 8 rightshift intarr,intn,intk...