JavaScript 位运算符 您所在的位置:网站首页 位运算js JavaScript 位运算符

JavaScript 位运算符

2024-01-09 08:48| 来源: 网络整理| 查看: 265

JavaScript提供了一组位运算符,可以用来做简单的位运算。

 与Java等语言不同,JavaScript的数值型默认是浮点型,在进行位运算的时候需要先转换为整型才能运算,所以JavaScript的位运算效率比较低。

运算符 运算符 名称 描述 & AND 如果两位都是 1 则设置每位为 1 | OR 如果两位之一为 1 则设置每位为 1 ^ XOR 如果两位只有一位为 1 则设置每位为 1 ~ NOT 反转所有位 有符号右位移 通过从左推入最左位的拷贝来向右位移,并使最右边的位脱落。 >>> 零填充右位移 通过从左推入零来向右位移,并使最右边的位脱落。 实例 操作 结果 等同于 结果 5 & 1 1 0101 & 0001 0001 5 | 1 5 0101 | 0001 0101 5 ^ 1 4 0101 ^ 0001 0100 ~ 5 -6 ~0101 1010 5 1 2 0101 >> 1 0010 5 >>> 1 2 0101 >>> 1 0010 JavaScript 使用 32 位按位运算数

JavaScript 将数字存储为 64 位浮点数,但所有按位运算都以 32 位二进制数执行。

在执行位运算之前,JavaScript 将数字转换为 32 位有符号整数。

执行按位操作后,结果将转换回 64 位 JavaScript 数。

上面的例子使用 4 位无符号二进制数。所以 ~ 5 返回 10。

由于 JavaScript 使用 32 位有符号整数,JavaScript 将返回 -6。

00000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

有符号整数使用最左边的位作为减号。

位运算 AND

当对一对数位执行位运算 AND 时,如果数位均为 1 则返回 1。

单位示例: 运算 结果 0 & 0 0 0 & 1 0 1 & 0 0 1 & 1 1 四位示例: 运算 结果 1111 & 0000 0000 1111 & 0001 0001 1111 & 0010 0010 1111 & 0100 0100 位运算 OR

当对一对数位执行位运算 OR 时,如果其中一位是 1 则返回 1:

单位示例 运算 结果 0 | 0 0 0 | 1 1 1 | 0 1 1 | 1 1 四位运算: 操作 结果 1111 | 0000 1111 1111 | 0001 1111 1111 | 0010 1111 1111 | 0100 1111 位运算 XOR

当对一对数位进行位运算 XOR 时,如果数位是不同的则返回 1:

单位示例: 运算 结果 0 ^ 0 0 0 ^ 1 1 1 ^ 0 1 1 ^ 1 0 四位示例: 运算 结果 1111 ^ 0000 1111 1111 ^ 0001 1110 1111 ^ 0010 1101 1111 ^ 0100 1011 JavaScript 位运算 AND (&)

如果位数都是 1,则位运算 AND 返回 1:

十进制 二进制 5 00000000000000000000000000000101 1 00000000000000000000000000000001 5 & 1 00000000000000000000000000000001 (1) 实例var x = 5 & 1; JavaScript 位运算 OR (|)

如果数位之一是 1,则位运算 OR 返回 1:

十进制 二进制 5 00000000000000000000000000000101 1 00000000000000000000000000000001 5 | 1 00000000000000000000000000000101 (5) 实例var x = 5 | 1; JavaScript 位运算 XOR (^)

如果数位是不同的,则 XOR 返回 1:

十进制 二进制 5 00000000000000000000000000000101 1 00000000000000000000000000000001 5 ^ 1 00000000000000000000000000000100 (4) 实例var x = 5 ^ 1; JavaScript 位运算 NOT (~) 十进制 二进制 5 00000000000000000000000000000101 ~5 11111111111111111111111111111010 (-6) 实例var x = ~5; JavaScript(零填充)位运算左移( 1 11111111111111111111111111111101 (-3) 实例var x = -5 >> 1; JavaScript(零填充)右移(>>>)

这是零填充的右移。一个或多个零数位从左侧被推入,最右侧的数位被移出:

十进制 二进制 5 00000000000000000000000000000101 5 >>> 1 00000000000000000000000000000010 (2) 实例var x = 5 >>> 1; 32-bit 有符号整数(二进制数)

仅设置一位的 32 位整数很好理解:

二进制表示 十进制值 00000000000000000000000000000001 1 00000000000000000000000000000010 2 00000000000000000000000000000100 4 00000000000000000000000000001000 8 00000000000000000000000000010000 16 00000000000000000000000000100000 32 00000000000000000000000001000000 64

多设置一些数位揭示了二进制的模式:

二进制表示 十进制值 00000000000000000000000000000101 5 (4 + 1) 00000000000000000000000000101000 40 (32 + 8) 00000000000000000000000000101101 45 (32 + 8 + 4 + 1)

负数是正数的二进制补码加 1:

二进制表示 十进制值 00000000000000000000000000000101 5 11111111111111111111111111111011 -5 00000000000000000000000000101000 40 11111111111111111111111111011000 -40 11111111111111111111111111011001 -41 把十进制转换为二进制 实例function dec2bin(dec){ return (dec >>> 0).toString(2); } 把二进制转换为十进制 实例function bin2dec(bin){ return parseInt(bin, 2).toString(10); }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有