<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>位运算符</title>
</head>
<body>
</body>
<script type="text/javascript">

    // 将数字转化为二进制
    var num1 = 18;
    console.log(num1.toString(2));

    // ~ NOT 运算符, 本质取反减一
    var num2 = -12;
    console.log(~num2);

    // & AND 运算符, 直接对数字的二进制形式进行运算
    //  计算规则, 只有都为1才为1, 否则为0
    //  25  = 0000 0000 0000 0000 0000 0000 0001 1001
    //  3   = 0000 0000 0000 0000 0000 0000 0000 0011
    //  AND = 0000 0000 0000 0000 0000 0000 0000 0001
    var num3 = 25 & 3;
    console.log(num3);

    // | OR 运算符, 直接对数字的二进制形式进行运算
    // 计算规则, 只要有一个是 1, 就为 1, 否则为 0
    // 25 = 0000 0000 0000 0000 0000 0000 0001 1001
    // 3  = 0000 0000 0000 0000 0000 0000 0000 0011
    // OR = 0000 0000 0000 0000 0000 0000 0001 1011
    var num4 = 25 | 3;
    console.log(num4);

    // ^ XOR 运算符, 直接对数字的二进制形式进行运算
    // 计算规则, 只要有一个是 1 一个是 0 则为 1, 否则为 0
    // 25  = 0000 0000 0000 0000 0000 0000 0001 1001
    // 3   = 0000 0000 0000 0000 0000 0000 0000 0011
    // XOR = 0000 0000 0000 0000 0000 0000 0001 1010
    var num5 = 25 ^ 3;
    console.log(num5);

    // << 左移运算符, 它把二进制数字中的所有数位向左移动指定的数量
    var num6 = 2 << 5;
    console.log(num6);

    // >> 有符号右移运算符, 它把 32 位数字中的所有数位整体右移
    var num7 = 64 >> 5;
    console.log(num7);

    // >>> 无符号右移运算符, 它将无符号 32 位数的所有数位整体右移, 慎重使用
    var num8 = -64 >>> 5;
    console.log(num8);

</script>
</html>

 

posted on 2017-11-28 15:49  被遗忘的优雅  阅读(199)  评论(0编辑  收藏  举报