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));
- 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中的位操作符:“与,或,非,异或,左移,右移”相关推荐
- JS中的new操作符原理解析
JS中的new操作符原理解析 new操作符做了什么 参考 推荐阅读 你越是认真生活,你的生活就会越美好--弗兰克·劳埃德·莱特 <人生果实>经典语录 new操作符做了什么 var Pers ...
- 这些 JS 中强大的操作符,总有几个你没听说过
大家好,我是若川.今天推荐一篇相对简单些的文章. 大家应该都知道了我最近组织了源码共读活动, 有小伙伴表示读源码上瘾,也很有收获.工作0-5年都可以参与.感兴趣可以加我微信 ruochuan12 私信 ...
- js中15位及18位身份证号码的校验
15位身份证结构: 地区代码(6位),年(2位)月(2位)日(2位),顺序码(3位,最后1位偶数代表女,奇数代表男) 18位身份证结构: 地区代码(6位),年(4位)月(2位)日(2位),顺序码(3位 ...
- js中使用new操作符做了什么事情
例:var obj = new Base(); 该步一共做了三件事:即 var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj); 第一 ...
- 单片机c语言或运算,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解
位运算是指按二进制位进行的运算.在单片机中位运算通常用于I/O端口的输入输出控制和逻辑判断. C语言提供的位运算符有: 运算符 含义 功能 & 按位与 如果两个相应的二进制位都为1,则该位的结 ...
- JS中或﹑与﹑否﹑异或﹑左移﹑右移﹑头尾补零的右移运算符
1.二进制或运算符(or):符号为 | 逐位比较两个运算子,两个二进制位之中只要有一个为1,就返回1,否则返回0. 0 | 3 // 3 上面代码中,0和3的二进制形式分别是00和11,所以进行二进制 ...
- js中一些常用的基本函数
如何使用jquery刷新当前页面 下面介绍全页面刷新方法:有时候可能会用到 window.location.reload()刷新当前页面. parent.location.reload()刷新父亲对象 ...
- 网站开发中JS中的常用语句
1.document.write( " "); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document- >html- >(head,body ...
- js中的关键字总结呢
1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...
最新文章
- android 应用程序分析之settings,Android 应用程序分析之Settings
- python程序设计报告-20183215 实验三《Python程序设计》实验报告
- Redhat7 systemctl命令
- poj 1270(toposort)
- 利用JSP交互式打印表格
- 串口通讯编程一日通3(COMMTIMEOUTS DCB整理)
- chatbot2 RNN语言模型
- C语言 const 和 define 区别 - C语言零基础入门教程
- 设计师中国风作品必备汉字毛笔字偏旁部首大集合
- 管理员用户不同身份登录页面代码PHP,wordpress管理员登录和普通用户登录后跳转到不同页面-♚付涛纪实阁♚...
- MVC.Net:压缩/保存图片缩略图
- android 跨进程 android:process,Android跨进程通信技术-多进程模式的运行机制
- 控制台——EventLog实现事件日志操作
- 汉典速查: 一个简易的国学阅读工具
- VBoxGuestAdditions加载不了
- (Giser源数据获取必备)地理空间数据云
- python控制灯开关_通过树莓派控制电灯开关
- postman Could not send request
- 关于LPC21**系列串口初始化已知晶振频率 求U0DLL和U0DLM 重点注意M P 和分频倍率n
- win7系统中的消息队列服务器,高手分析win7系统安装消息队列的详细