移位操作符

2022-04-08 08:53:10 字數 1909 閱讀 5837

移位操作符操作運算物件是 位(bit)

它處理的資料型別只能是 整數型別(int)

先大概看一下圖,了解它是怎麼移動的,下面會解釋規則

移位的時候關注兩點,  1.移動的方向 2.空缺位置的填補形式.

"有符號"左移位操作符(將二進位制資料左移(在低位補0).

int

i = 12448;

system.out.println(integer.tobinarystring(i<<5));

/*

將i的二進位制表示 11000010100000

* 向左移動5位,在低位補0,結果是1100001010000000000

*/

int i = -12448;

system.out.println(integer.tobinarystring(i<<5));

/* 將i的二進位制表示 11111111111111111100111101100000

*向左移動5位,在低位補0,結果是11111111111110011110110000000000

*/

"有符號"右移位操作符(>>)將二進位制資料右移.(若符號原來是,就在高位插入0,為就在高位插入1

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

*/

"移位" 與 "等號" 組合使用 表示方法"<<=或》=或》="

這樣會執行兩步操作,先移位,然後賦值.

話不多說練習**貼出來

public

class

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.如果移動的位數超過了該型別的最大位數,編譯器會對...