java實現迴圈左移和右移的簡單演算法
阿新 • • 發佈:2019-02-12
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位的結果進行或運算,再將或運算的結果強制轉換為原型別即可。