二進制用 0 1 表示 2= 10
十六進制 前綴0x 用0123456789ABCDEF表示 2= 0x2
二進制與十六進制的轉換
十六進制的每位 等於二進制的四位編碼
十六進制 0xF = 15(十進制) = 1111(二進制) 十六進制每位最大就是二進制的 1111 = 15(十進制) 二進制 2 = 10 十六進制 2 = 0x2 = 0010 規律很清晰了吧 20 = 10100(6位 口算得出要補齊8位) 0001 0100 0001 = 1 0100 = 4 20 = 0001 0100 = 0x14
一個字節是8個二進制位
0000 0000 - 1111 1111 = 0-255 表明一個字節能夠表示256個字符code
UTF-16大部分使用兩個字節編碼,編碼超出 65535 的使用四個字節
0x0000 - 0xFFFF 兩個字節
0x010000 - 0x10FFFF 四個字節ip
0x0000 - 0x007F 一個字節
0x0080 - 0x07FF 兩個字節
0x0800 - 0xD7FF 、0xE000 - 0xFFFF 三個字節
0x010000 - 0x10FFFF 四個字節
注: Unicode在範圍 D800-DFFF 中不存在任何字符it
全部的按位操做符的操做數都會被轉成補碼(two's complement)形式的有符號32位整數。二進制
js中的二進制轉換是不會轉換符號的方法
1的反碼 補碼 以及 -1 1 = 0000 0000 0000 0000 0000 0000 0000 0001 反碼 1 =0、0 =1 下面會講述按位操做符 按位非 ~ 其實就是反碼 1111 1111 1111 1111 1111 1111 1111 1110 補碼後 末位+1 1111 1111 1111 1111 1111 1111 1111 1111 = -1
按位操做符(Bitwise operators) 將其操做數(operands)看成32位的比特序列(由0和1組成),而不是十進制、十六進制或八進制數值。例如,十進制數9,用二進制表示則爲1001。按位操做符操做數字的二進制形式,可是返回值依然是標準的JavaScript數值。
&、| 在轉碼中比較經常使用移動
1爲真,0爲假 全真則真 遇假爲假co
js 內置方法 var a = 1; a.toString(2); 十轉二 2 = 10 3 = 11 二進制進行按位與運算 從左到右 1 && 1 = 1 0 && 1 = 0 2 & 3 = 10 = 2
1爲真,0爲假 遇真則真 全假爲假字符
8 = 1000 9 = 1001 二進制按位或運算 從左到右 1 || 1 = 1 0 || 0 = 0 0 || 0 = 0 0 || 1 = 1 8 | 9 = 1001 = 9
1爲真,0爲假。不一樣爲真 相同爲假數字
4 = 100 5 = 101 二進制按位異或運算 從左到右 1 1 = 0 0 0 = 0 0 1 = 1 4 ^ 5 = 001 = 1
1爲真,0爲假 對每一項進行非操做,遇真則假,遇假則真。(速算, ~x =-1*x-1)
6 = 00000000 00000000 00000000 00000110 11111111 11111111 11111111 11111001 = -7
有兩個操做數 左側爲要被移動的數字(十進制,可是操做是內部對二進制操做)
右側爲移動的長度方向根據操做符移動,返回根據被操做數相同類型的結果,必須小於32位
a << b 右側末位開始補 b個0 左側捨去b個位
11 = 00000000 00000000 00000000 00001011 11 << 2 右側末位開始補 b個0 00000000 00000000 00000000 00001011 00 左側捨去b個位 000000 00000000 00000000 00001011 00 格式化 00000000 00000000 00000000 00101100 = 44 -44 = (反碼)11111111 11111111 11111111 11010011 (補碼)11111111 11111111 11111111 11010100 -11 = (反碼)11111111 11111111 11111111 11110100 (補碼)11111111 11111111 11111111 11110101 -11 << 2 右側末位開始補 b個0 11111111 11111111 11111111 11110101 00 左側捨去b個位 111111 11111111 11111111 11110101 00 格式化 11111111 11111111 11111111 11010100 = -44
a >> b 左側首位開始補 b 個 首位值 右側側捨去b個位
12 = 00000000 00000000 00000000 00001100 12 >> 2 補 b 個 首位值 00 00000000 00000000 00000000 00001100 右側捨去b個位 00 00000000 00000000 00000000 000011 格式化 00000000 00000000 00000000 00000011 = 3 -3 = (反碼)11111111 11111111 11111111 11111100 (補碼)11111111 11111111 11111111 11111101 -12 >> 2 -12 = (反碼)11111111 11111111 11111111 11110011 (補碼)11111111 11111111 11111111 11110100 -12 >> 2 補 b 個 首位值 11 11111111 11111111 11111111 11110100 右側捨去b個位 11 11111111 11111111 11111111 111101 格式化 11111111 11111111 11111111 11111101 = -3