二进制与十六进制二进制用 0 1 表示 2= 10十六进制 前缀0x 用0123456789ABCDEF表示 2= 0x2二进制与十六进制的转换十六进制的每位 等于二进制的四位十六进制 0xF = 15(十进制) = 1111(二进制) 十六进制每位最大就是二进制的 1111 = 15(十进制)二进制2 = 10十六进制2 = 0x2 = 0010规律很清晰了吧20 = 10100(6位 口算得出要补齐8位)0001 01000001 = 10100 = 420 = 0001 0100 = 0x14二进制字节一个字节是8个二进制位0000 0000 - 1111 1111 = 0-255 代表一个字节可以表示256个符号UTF编码字节UTF-16UTF-16大部分使用两个字节编码,编码超出 65535 的使用四个字节0x0000 - 0xFFFF 两个字节0x010000 - 0x10FFFF 四个字节UTF-80x0000 - 0x007F 一个字节0x0080 - 0x07FF 两个字节0x0800 - 0xD7FF 、0xE000 - 0xFFFF 三个字节0x010000 - 0x10FFFF 四个字节注: Unicode在范围 D800-DFFF 中不存在任何字符有符号32位整数节所有的按位操作符的操作数都会被转成补码(two’s complement)形式的有符号32位整数。反码、补码 负数js中的二进制转换是不会转换符号的1的反码 补码 以及 -11 = 0000 0000 0000 0000 0000 0000 0000 0001反码 1 =0、0 =1 下面会讲述按位操作符 按位非 ~ 其实就是反码1111 1111 1111 1111 1111 1111 1111 1110补码后 末位+11111 1111 1111 1111 1111 1111 1111 1111 = -1按位操作符按位操作符(Bitwise operators) 将其操作数(operands)当作32位的比特序列(由0和1组成),而不是十进制、十六进制或八进制数值。例如,十进制数9,用二进制表示则为1001。按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript数值。&、| 在转码中比较常用按位与 &1为真,0为假 全真则真 遇假为假js 内置方法var a = 1;a.toString(2);十转二2 = 103 = 11二进制进行按位与运算 从左到右1 && 1 = 10 && 1 = 02 & 3 = 10 = 2按位或 |1为真,0为假 遇真则真 全假为假8 = 10009 = 1001二进制按位或运算 从左到右1 || 1 = 10 || 0 = 00 || 0 = 00 || 1 = 1 8 | 9 = 1001 = 9按位异或 ^1为真,0为假。不同为真 相同为假4 = 1005 = 101二进制按位异或运算 从左到右1 1 = 00 0 = 00 1 = 14 ^ 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 0000101111 << 2 右侧末位开始补 b个000000000 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带符号右移操作符( 记住左侧首位 0 代表正 ,1 代表负) >>a >> b 左侧首位开始补 b 个 首位值 右侧侧舍去b个位12 = 00000000 00000000 00000000 0000110012 >> 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