JavaScript位运算

前言

    位运算符是在数字底层(即表示数字的 32 个数位)进行操作的,在 ECMAScript 中,所有整数字面量默认是有符号整数

    其对2^31进行了均摊,使正数占差不多2^30,负数差不多2^30

    最高位32位表示符号,其中正为0,负为1

    数值范围从 -2147483648 到 2147483647。之所以正数要比负数小1,是因为正数要包括0

    正负运算为:取反加1

左移

    符号:<<

    操作:十进制转32进制后整体向左移动指定位数,空出的位置补0   

    示例

        00000000000000000000000000011001

        <<3

        00000000000000000000000011001000

右移

    有符号:>>

    无符号:>>>

    操作:十进制转32进制后整体向右移动指定位数,有符号对空出的位置补符号位无符号补0

按位非(取反码)

    符号:~

    操作:将32位上的0和1互换,等价于取负数后-1

    示例

        00000000000000000000000000011001

        ~

        11111111111111111111111111100110   按位取反

        1000000000000000000000000011001  保留符号位取反

        1000000000000000000000000011010  末位加1

(按位取反保留符号位再取反)

按位与

    符号:&

    操作:32位上同为1保留,其余记0

    示例

        0000 0000 0000 0000 0000 0000 0001 1001

        &

        0000 0000 0000 0000 0000 0000 0000 0011

        =

        0000 0000 0000 0000 0000 0000 0000 0001

按位或

    符号:|

    操作:32位上有1保留,其余记0

    示例

        0000 0000 0000 0000 0000 0000 0001 1001

        |

        0000 0000 0000 0000 0000 0000 0000 0011

        =

        0000 0000 0000 0000 0000 0000 0001 1011

按位异或

    符号:^

    操作:32位同为0,异为1(无进位相加

    示例

        0000 0000 0000 0000 0000 0000 0001 1001

        ^

        0000 0000 0000 0000 0000 0000 0000 0011

        =

        0000 0000 0000 0000 0000 0000 0001 1010

位图

你可能感兴趣的:(JavaScript位运算)