移位操作符操作運算物件是 位(bit)
它處理的資料型別只能是 整數型別(int)
先大概看一下圖,了解它是怎麼移動的,下面會解釋規則
移位的時候關注兩點, 1.移動的方向 2.空缺位置的填補形式.
"有符號"左移位操作符(將二進位制資料左移(在低位補0).
inti = 12448;
system.out.println(integer.tobinarystring(i<<5));
/*
將i的二進位制表示 11000010100000
* 向左移動5位,在低位補0,結果是1100001010000000000
*/
int i = -12448;"有符號"右移位操作符(>>)將二進位制資料右移.(若符號原來是正,就在高位插入0,為負就在高位插入1)system.out.println(integer.tobinarystring(i<<5));
/* 將i的二進位制表示 11111111111111111100111101100000
*向左移動5位,在低位補0,結果是11111111111110011110110000000000
*/
int i = 12448;system.out.println(integer.tobinarystring(i>>5));
/*二進位制表示:
11000010100000
*右移5位: 110000101 對比看出,當為正數時高位的0不顯示
*/
i = -12448; system.out.println(integer.tobinarystring(i>>5));相對有符號右移/*二進位制表示:11111111111111111100111101100000
*右移5位: 11111111111111111111111001111011
*/
"無符號"右移操作符(>>>)就是說,無論資料是正負都在高位插入0.
i = 12448;system.out.println(integer.tobinarystring(i>>>5));
/*二進位制表示: 11000010100000
*無符號右移5位 110000101
*/i = -12448;
system.out.println(integer.tobinarystring(i>>>5));
/*二進位制表示: 11111111111111111100111101100000*無符號右移5位 111111111111111111001111011
*/
"移位" 與 "等號" 組合使用 表示方法"<<=或》=或》="
這樣會執行兩步操作,先移位,然後賦值.
話不多說練習**貼出來
publicclass
bitmanipulation
//對整數進行處理
static
void printbinaryint(string s,int
i)
//對長整形資料進行處理
static
void printbinarylong(string s,long
l)}
移位操作符
移位操作符 位移位運算子是將資料看成二進位制數,對其進行向左或向右移動若干位的運算。位移位運算子分為左移和右移兩種,均為雙目運算子。第一運算物件是移位物件,第二個運算物件是所移的二進位制位數。位移位運算子的運算物件 運算規則與結果 結合性如表2 16所示。移位時,移出的位數全部丟棄,移出的空位補入的...
移位操作符
左移 在左移位中,值最左邊的幾位被丟棄,右邊多出來的幾個空格則由 0 補齊。如上圖。右移 右移位操作存在乙個左移位操作不曾面臨的問題,從左邊移入新位時,可以選擇兩種方案。一種是邏輯移位,左邊移入位用 0 填充 另一種是算數移位,左邊移入的位由原來的符號位決定,符號位為 1 則移入的位均為 1 符號位...
Java 移位操作符
左移運算子,按照操作符右側指定的位數將操作符左邊的運算元向左移動 在低位補零 例如 num 1,相當於num乘以2 左移的規則只記住一點 丟棄最高位,0補最低位 運算規則 按二進位制的形式把所有數字向左移動對應的位數,高位移出 捨棄 高低位的空位補0.如果移動的位數超過了該型別的最大位數,編譯器會對...