以十進制轉二進制爲例,除以2取餘數,若是商數不爲0,商數繼續除以2取餘數,直到商數爲0,例如:code
6變二進制數則爲00000110,過程以下io
6/2 = 3...0function
3/2 = 1...1原理
1/2 = 0...1 二進制
3變二進制數則爲00000011,過程以下移動
3/2 = 1...1co
1/2 = 0...1let
注:二進制轉十進制則將過程相反,其餘進制的轉化也是以此類推數字
6&3,則是轉爲二進制後,000001十、00000011進行運算
獲得二進制數,00000010,再由二進制轉十進制就是 2位運算
二、| 運算(非假即真)
6|3的結果爲二進制00000111,換算十進制就是 7
三、^ 運算(相同爲假,不一樣爲真)
6^3的結果爲二進制00000101,換算十進制就是 5
四、~運算(真爲假,假爲真)
~6的結果爲二進制11111001,換算十進制就是 -7
注:負數換算二進制時,取反碼+1取得反碼數,例如-7,先由7轉化爲二進制是00000111,取反碼就是11111000,在取補碼得11111001
五、>>右移(首位符號爲不動,把32位二進制數字總體往右邊
移動指定n位數,右邊超出部分被捨去)
6>>1的結果爲00000110 → 00000011,換算十進制就是 3
六、<<左移(和>>原理相同,方向相反)
6<<1的結果爲00000110 → 00001100,換算十進制就是 12
一、使用&運算符判斷一個數的奇偶,X & 1 等於 0 爲偶,1爲奇
2&1 = 0
1&1 = 1
二、使用~~,>>,<<,>>>,|來取整
~~3.14 = 3
3.14 >> 0 = 3
3.14 << 0 = 3
3.14 | 0 = 3
3.14 >>> 0 = 3(>>>不可對負數取整)
三、^來完成比較兩個數是否相等
1^1 = 0
1^2 != 0
四、使用&,>>,|來完成rgb值和16進制顏色值之間的轉換
function toRGB(hex){
let hex = hex.replace("#","0x"), r = hex >> 16, g = hex >> 8 & 0xff, b = hex & 0xff
return 'rgb("+r+","+g+","+b+")'
}