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));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

十进制转二进制

先将值转换成二进制。 

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

按位与&

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

按位或|

或运算法则:只有当2个位都是0时,或的结果才是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

逗号表达式:

一般形式:表达式1,表达式2,表达式3,......表达式n

求解过程:先计算表达式1的值,再计算表达式2的值,......一直计算到表达式n的值。最后整个表达式的值是表达式n的值。

看下面几个例子:

1)x = 8*2, x*4; /*整个表达式为逗号表达式,它的值为64,x的值为16*/

2)(x = 8*2, x*4) , x*2; /*整个表达式为逗号表达式,它的值为32,x的值为16*/

3)x = (z=5,5*2); /*整个表达式为赋值表达式,它的值为10,z的值为5*/

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

  1. JS中的new操作符原理解析

    JS中的new操作符原理解析 new操作符做了什么 参考 推荐阅读 你越是认真生活,你的生活就会越美好--弗兰克·劳埃德·莱特 <人生果实>经典语录 new操作符做了什么 var Pers ...

  2. 这些 JS 中强大的操作符,总有几个你没听说过

    大家好,我是若川.今天推荐一篇相对简单些的文章. 大家应该都知道了我最近组织了源码共读活动, 有小伙伴表示读源码上瘾,也很有收获.工作0-5年都可以参与.感兴趣可以加我微信 ruochuan12 私信 ...

  3. js中15位及18位身份证号码的校验

    15位身份证结构: 地区代码(6位),年(2位)月(2位)日(2位),顺序码(3位,最后1位偶数代表女,奇数代表男) 18位身份证结构: 地区代码(6位),年(4位)月(2位)日(2位),顺序码(3位 ...

  4. js中使用new操作符做了什么事情

    例:var obj = new Base(); 该步一共做了三件事:即 var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj); 第一 ...

  5. 单片机c语言或运算,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解

    位运算是指按二进制位进行的运算.在单片机中位运算通常用于I/O端口的输入输出控制和逻辑判断. C语言提供的位运算符有: 运算符 含义 功能 & 按位与 如果两个相应的二进制位都为1,则该位的结 ...

  6. JS中或﹑与﹑否﹑异或﹑左移﹑右移﹑头尾补零的右移运算符

    1.二进制或运算符(or):符号为 | 逐位比较两个运算子,两个二进制位之中只要有一个为1,就返回1,否则返回0. 0 | 3 // 3 上面代码中,0和3的二进制形式分别是00和11,所以进行二进制 ...

  7. js中一些常用的基本函数

    如何使用jquery刷新当前页面 下面介绍全页面刷新方法:有时候可能会用到 window.location.reload()刷新当前页面. parent.location.reload()刷新父亲对象 ...

  8. 网站开发中JS中的常用语句

    1.document.write( " "); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document- >html- >(head,body ...

  9. js中的关键字总结呢

    1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...

最新文章

  1. android 应用程序分析之settings,Android 应用程序分析之Settings
  2. python程序设计报告-20183215 实验三《Python程序设计》实验报告
  3. Redhat7 systemctl命令
  4. poj 1270(toposort)
  5. 利用JSP交互式打印表格
  6. 串口通讯编程一日通3(COMMTIMEOUTS DCB整理)
  7. chatbot2 RNN语言模型
  8. C语言 const 和 define 区别 - C语言零基础入门教程
  9. 设计师中国风作品必备汉字毛笔字偏旁部首大集合
  10. 管理员用户不同身份登录页面代码PHP,wordpress管理员登录和普通用户登录后跳转到不同页面-♚付涛纪实阁♚...
  11. MVC.Net:压缩/保存图片缩略图
  12. android 跨进程 android:process,Android跨进程通信技术-多进程模式的运行机制
  13. 控制台——EventLog实现事件日志操作
  14. 汉典速查: 一个简易的国学阅读工具
  15. VBoxGuestAdditions加载不了
  16. (Giser源数据获取必备)地理空间数据云
  17. python控制灯开关_通过树莓派控制电灯开关
  18. postman Could not send request
  19. 关于LPC21**系列串口初始化已知晶振频率 求U0DLL和U0DLM 重点注意M P 和分频倍率n
  20. win7系统中的消息队列服务器,高手分析win7系统安装消息队列的详细

热门文章

  1. 自相关系数与偏自相关系数,拖尾与截尾
  2. 人生时间计算器_如果人生用一张A4纸计算,看看你还剩多少时间?
  3. matlab dpsk,基于MATLAB的dpsk系统仿真代码
  4. python中加法表达式_Python自然语言处理练习一
  5. 教你制作手机电子书android应用 无技术要求
  6. centos7下压缩包手动安装mysql以及设置开机自启动
  7. R语言 判断矩阵是否对称半正定
  8. 雨课堂卷子提前看_雨课堂怎么新建试卷?制作试题的具体方法
  9. 程控电阻白皮书(二)
  10. 2022年下半年系统集成项目管理工程师综合知识真题及答案解析