二进制用 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