1. 程式人生 > >java實現迴圈左移和右移的簡單演算法

java實現迴圈左移和右移的簡單演算法

 byte a=112,用程式實現,將其迴圈左移三位右移三位

112的二進位制原碼:0111 0000

112迴圈左移3位後的二進位制碼:1000 0011

112迴圈右移3位後的二進位制碼:0000 1110

先將迴圈左移的程式程式碼告訴大家:

public class TestCircle{
 public static void main(String args[]){
  byte x=112;
  System.out.println((byte)(x<<3|x>>5));
 }
}

程式的輸出結果是-125,它的原碼為1111 1101,補碼為1000 0011(正好是112迴圈左移三位後的數字)

再看迴圈右移

的程式程式碼:

public class TestCircle{
 public static void main(String args[]){
  byte x=112;
  System.out.println((byte)(x>>3|x<<5));
 }
}

程式的輸出結果是14,他的原碼、補碼相同都是0000 1110(正好是112迴圈右移三位後的數字)

總結:對於一個數據型別長度為L的資料n,對其進行迴圈左移m位(或右移m位),只需將資料n左移(或右移)m位的結果和資料n右移(或左移)L-m位的結果進行或運算,再將或運算的結果強制轉換為原型別即可。