专栏首页smyJS中的位操作符:“与,或,非,异或,左移,右移”

JS中的位操作符:“与,或,非,异或,左移,右移”

Javascript有算数操作符,赋值操作符,比较操作符,逻辑操作符,同时也有位操作符。

引子

先想一想,如下,该输出什么答案?

console.log('5 & 1 :', ( 5 & 1 ));
console.log('5 | 1 :', ( 5 | 1));
console.log('~ 5:', (~5));
console.log('5 ^ 1 :', ( 5 ^ 1));
console.log('5 << 1 :', ( 5 << 1));
console.log('5 >> 1 :', ( 5 >> 1));

十进制转二进制

先将值转换成二进制。

5除以2余1,2除以2余0,1除以2余1。将余数倒过来,就得到5的二进制数101。 同理可得1的二进制数1。

与&

与运算法则:两位同时为“1”,结果才为“1”,否则为0 5 & 1 = 1

或|

或运算法则:两位其中一个为“1”,结果为“1”,否则为0 5| 1 = 5

非运算法则:单目运算符

二进制原码:0000 0000 0000 0000 0000 0000 0000 0101 
取反操作后:1111 1111 1111 1111 1111 1111 1111 1010 
有符号整数都是用补码来表示,而补码=反码+1 
1.先求反码:1000 0000 0000 0000 0000 0000 0000 0101 
2.再求补码:1000 0000 0000 0000 0000 0000 0000 0110 
最高位代表符号位 1 表示负数,0 表示正数 
~5 = -6

异或^

异或运算法则:两位不同,结果为“1”,否则为0 5^1 = 4

左移

左移运算法则:将数值向左移动若干位,用0补足 5<< 1 = 10

右移

右移运算法则:将数值向右移动若干位 5>>1 = 2

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • webpack下css/js/html引用图片的正确方式

    在webpack的处理下,为了使引用的图片被打包编译(以把src的图片文件编译到dist中或者对src的文件进行base64编码),应使用如下引用方式:

    smy
  • 理解音视频 PTS 和 DTS

    视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉。

    smy
  • 图片和视频防盗链简单介绍

    一. 防盗链原理 http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referer。图片服务器通过检测 Referer 是否来自规定域...

    smy
  • JavaScript操作符(一元操作符、位操作符)

    JavaScript操作符包括算术操作符、位操作符、关系操作符和相等操作符。只能操作一个值的操作符叫做一元操作符。 递增和递减操作符 递增和递减操作符有两个版本...

    水击三千
  • HashMap源码分析

    代码改变世界-coding
  • 可能是最通俗易懂的 Java 位操作运算讲解

    Java 位操作这是一项很基础很基础的知识内容,在所有 Android 和 Java 开发者的学习之路上,大家都接触过,但是实际运用的场景却很少见,很多人估计都...

    Frank909
  • 为什么Java中int型数据取值范围是[-2^31,2^31-1]

    1、为什么Java中int型数据取值范围是[-2^31,2^31-1],多么神奇的问题,网上找了很多,找不到点子上,自己瞎总结一下子。

    别先生
  • Java基础-位运算

    位运算其实就是移位运算,将内存里面的二进制进行移位比如二进制=101向右移1位 010|1移位之后的1其实已经不被计算在内了, 变成内存里面的垃圾在java中,...

    suveng
  • 1-1 Java基础-位运算

    位运算其实就是移位运算,将内存里面的二进制进行移位 比如二进制=101向右移1位 010|1 移位之后的1其实已经不被计算在内了, 变成内存里面的垃圾 在...

    suveng
  • 分布式id生成算法SnowFlake

    10位记录工作机器id;即datacenterId (5位数据id) + workerId (5位机器id)

    chenchenchen

扫码关注云+社区

领取腾讯云代金券