前置知識: 進制互轉
如果還不了解請看往期部落格: 傳送
左移位 <<
格式: num << value
意義: 将num左移value位置
運算規則: 丢棄最高位, 0補最低位
數學意義: 在數字沒有溢出的前提下,對于正數和負數, 左移一位都相當于乘以2的1 次方,左移n位就相當于乘以2的n次方
注意: 如果移進高階位(31或63位), 那麼該值将變為負值
栗子: 3 << 2
解: 先将10進制的3轉化為2進制
0000 0000 0000 0000 0000 0000 0000 0011
将 2進制的資料丢棄2個最高位 在最低位用0補位
0000 0000 0000 0000 0000 0000 0000 001100
紅色為删除的位數 藍色為補齊的位數 丢棄補齊的位數由偏移量 (value)決定
将處理的資料 (1100) 轉化為10進制 (12)
是以結果為 12
右移位 >>
格式: num >> value
意義: 将num右移value位置
運算規則: 丢棄最低位, 在最高位 正數用0, 負數用1 補位
數學意義: 右移一位相當于除2,右移n位相當于除以2的n次方
栗子: 9 >> 2
解: 先将10進制的9轉化為2進制
0000 0000 0000 0000 0000 0000 0000 1001
将二進制的資料丢棄2個最低位 在最高位 正數用0, 負數用1 補位
000000 0000 0000 0000 0000 0000 0000 1001
紅色為删除的位數 藍色為補齊的位數 丢棄補齊的位數由偏移量 (value)決定
将處理的資料 (10) 轉化為10進制 (2)
是以結果為 2
無符号右移位 >>>
格式: num >>> value
意義: 将num右移value位置
運算規則: 丢棄最低為, 在最高位用0補位
注意: 無符号右移運算符 >>> 隻是對32位和64位的值有意義
無符号右移 與 右移 的
共同點是:
都丢棄最低位
不同點是:
右移 在最高位 正數用0, 負數用1 補位
無符号右移 在最高位用0補位
& , ^ , | 的差別
& 運算符: 都是1, 結果才是1
^ 運算符: 一個1一個0, 結果是1
| 運算符: 隻要有1, 結果是1
栗子: 3 & 1 3 ^ 1 3 | 1
解: 先将10進制的3和1 轉化為2進制
3: 0000 0000 0000 0000 0000 0000 0000 0011
1: 0000 0000 0000 0000 0000 0000 0000 0001
3 & 1 : 0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001
結果: 0000 0000 0000 0000 0000 0000 0000 0001 = 1
3 ^ 1 : 0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001
結果: 0000 0000 0000 0000 0000 0000 0000 0010 = 2
3 | 1 : 0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001
結果: 0000 0000 0000 0000 0000 0000 0000 0011 = 3
結束
這就是本期的運算符講解 感覺有用就點個贊吧 如果有錯誤或更好的方法評論區請多多指出 互相學習共同進步