JavaScript 進位制轉換、數位的表示形式
JavaScript 定義帶進位的計算方法
進位系統使用 JavaScript 函數數字進制變換,進位制中可以使用的數字符號的數目,亦可稱為進位制的基數或底數。
JavaScript 二進位制轉為十進位制
二進位制是計算機技術廣泛採用的數制。二進製數據是用 0 和 1 兩個數位來表示。它的基數為 2,進位規則是逢二進一。
let result = parseInt(this.value, 2)
JavaScript 十進位制轉為二進位制
let result = parseInt(this.value).toString(2);
相關於二進位的一些計算
11111111 = 255 // 8 個位數 1111111111111111 = 65535 // 16 個位數 111111111111111111111111 = 16777215 // 24 個位數 11111111111111111111111111111111 = 4294967295 // 32 個位數
移位運算子 <<, >>
let temp temp = 14 << 2 temp = 56
將運算式的位元向左移位。
因為 14 (二進位為 00001110) 向左移兩位元就等於 56 (二進位為 00111000)。
let temp temp = 14 >> 2 temp = 3
將運算式的位元向右移位。
因為 14 (二進位為 00001110) 向左移兩位元就等於 3 (二進位為 00000011)。
二進位的位元向左移位變化。
00000001 = 1 00000010 = 2 00000100 = 4 00001000 = 8 00010000 = 16 00100000 = 32 01000000 = 64 10000000 = 128
00000001 = 1 +1 = 2 00000011 = 3 +1 = 4 00000111 = 7 +1 = 8 00001111 = 15 +1 = 16 00011111 = 31 +1 = 32 00111111 = 63 +1 = 64 01111111 = 127 +1 = 128 11111111 = 255 +1 = 256
邏輯運算、位元運算 Logical Bitwise 位元運算子(Bitwise operator),數位設計 AND、OR、NOT、XOR 與補數等運算。
-
01111111 十進位 127 AND 00100000 十進位 32 = 00100000 十進位 32
-
01111111 十進位 127 OR 00100000 十進位 32 = 01111111 十進位 127
-
01111111 十進位 127 XOR 00100000 十進位 32 = 01011111 十進位 95
JavaScript 十進位制轉為八進位制
let result = parseInt(this.value).toString(8);
JavaScript 十進位制轉為十六進位制
十六進制 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , F
let result = parseInt(this.value).toString(16).toUpperCase();
JavaScript 十六進位制轉為十進位制
let result = parseInt(this.value, 16);
parseInt
parseInt() 解析字串轉換成整數,預設將字串轉換為以十進位表示的整數。如果第一個字元就無法被解析,則會回傳 NaN。
parseInt(string, radix)
string 欲轉換的值。若第一個參數值的類型不是 String,會先使用 ToString 轉換成字串。
radix 代表進位。數字的基數。該值介於 2 ~ 36 之間。如果該參數小於 2 或者大於 36,則 parseInt() 將返回 NaN。
parseInt(0.7418) = 0 parseInt(6.7418) = 6 parseInt(3.14) = 3 parseInt(-3.14) = -3 parseInt(-3.94) = -3 parseInt('010') = 10 parseInt('ABC') = NaN parseInt('1F') = 1 parseInt('F1') = NaN
parseInt(0x0FF) = 255 parseInt('0FF') = 0 parseInt(01111) = 585 parseInt(01111,2) = NaN parseInt('01111',2) = 15 parseInt(0xFFFFFF) = 16777215 parseInt(0xFFFfff) = 16777215 parseInt(-0xFFFFFF) = -16777215 parseInt(0xFFFFFFFF) = 4294967295
parseInt(0.1) = 0 parseInt(0.01) = 0 parseInt(0.001) = 0 parseInt(0.0001) = 0 parseInt(0.00001) = 0 parseInt(0.000001) = 0 parseInt(0.0000001) = 1 parseInt(0.00000001) = 1 parseInt(0.000000001) = 1
Number
轉換為 Number 數值。如果參數是 Date 物件 Number() 返回從 1970 年 1 月 1 日至今的「毫秒數」。
如果物件的值無法轉換為數位返回 NaN。
let num16 = 0xFFF; // 4095
let num8 = 0o1667; // 951
let num2 = 0b11111; // 31
let numE = 10e6; // 10000000