首先,移位運算子有三種,其操作型別只支援:byte / short / char / int和long五種。
<< 左移運算子,表示將左邊的運算元的二進位制資料向左移動*位,移動後空缺位以0填充,多餘位捨棄。(等同於乘2的n次方)
>> 右移運算子,二進位制資料向右移動*位,就在其二進位制資料後抹掉幾位?(這裡還不錯定,但個人理解是這樣的)(等同於除2的n次方)
>>> 無符號右移運算子,不管移動前最高位是0還是1,右移後左側產生的空位部分都以0來填充。
下面我們借乙個demo幫助理解:
public檢視執行結果,如圖所示:static
void
main(string args)
}
首先,16的二進位制資料為:10000;
左移兩位,10000變成1000000;
右移兩位,10000變成100;
把得到的二進位制資料轉換成普通資料後,
a左移後的值為64,既16 * 2的2次方(16 * 4)。
a右移後的值為4,既16 / 2的2次方(16 / 4)。
看完這個demo再理解移位運算子是不是就簡單很多?
關於移位運算子》和
首先,移位運算子有三種,其操作型別只支援 byte short char int和long五種。左移運算子,表示將左邊的運算元的二進位制資料向左移動 位,移動後空缺位以0填充,多餘位捨棄。等同於乘2的n次方 右移運算子,二進位制資料向右移動 位,就在其二進位制資料後抹掉幾位?這裡還不錯定,但個人理解...
位運算子和移位運算子
golang中有3個位運算 按位與 按位或 按位異或 按位與 兩位全為1,結果為1,否則為0 按位或 兩位有乙個為1,結果為1,否則為0 按位異或 兩位乙個為0,乙個為1,結果為1,否則為0 例如 2 3 2 2的補碼0000 0010 3的補碼0000 0011 2 3 0000 0010 2 2...
移位運算子
移位運算子不外乎就這三種 左移 帶符號右移 和 無符號右移 1 左移運算子 左移運算子 使指定值的所有位都左移規定的次數。1 它的通用格式如下所示 value num num 指定要移位值value 移動的位數。左移的規則只記住一點 丟棄最高位,0補最低位 如果移動的位數超過了該型別的最大位數,那麼...