js位操作
1.&(与)
都是1才是1
例如:14&15 (14 二进制 1110
15 二进制 1111
&与的结果 1110 ----》结果14)
(14&15).toString(2); //"1110"
2.|(或)
有一个是1就是1
例如:14|15 (14 二进制 1110
15 二进制 1111
|与的结果 1111 ----》结果15)
(14|15).toString(2); //"1111"
3.^(异或)
不同就是1
例如:14^15 (14 二进制 1110
15 二进制 1111
^与的结果 0001 ----》结果1)
(14^15).toString(2); //"1"
4.~(非)
说到这里就要科普一下了,JavaScript仅支持32位整型数
0变1,1变0
例如:~14(14 二进制 0000 0000 0000 0000 0000 0000 0000 1110
~的结果 1111 1111 1111 1111 1111 1111 1111 0001
最高位符号位为1,说明是个负数,大计基还记得嘛~~负数怎么来的
(正数二进制,取反,+1(为什么这样呢?因为计算机不擅长减法,所以把负数处理成补数,使得相减就等于他们的补数相加;而一个数的正负数取反相加是11111111...再+1才等于0,所以要+1))
逆过程,-1,取反
1111 1111 1111 1111 1111 1111 1111 0001 --> 0000 0000 0000 0000 0000 0000 0000 1111
----》15 ----》当然因为是个负数,最终结果是-15)
~14; //-15
5.<<(有符号左移)
有符号左移会将32位二进制数的所有位向左移动指定位数
num<<n相当于num乘以2的次方
var num = 5; // 二进制111 num << 3; // 二进制111000,十进制40
6.>>(有符号右移)
num>>n相当于num除以2的次方
(64).toString(2) //"1000000" (64>>3).toString(2) //"1000",十进制8
有符号左移与右移不会影响符号位。
7.>>>(无符号右移)
var num = -64; //11111111111111111111111111000000 (num >>> 5).toString(2); //"111111111111111111111111110",十进制134217726
ps:>> << ~有时候会用来取整
一般我们取整会用以下这些方式其中一种:
parseInt(1.5) //1 Math.round(1.5) //2 Math.floor(1.5) //1 Math.ceil(1.5) //2
但是有时候我们想追求更高的性能,我们会考虑用位运算来取整:
1.5>>0 //1 1.5<<0 //1 ~~1.5 //1
参与 位运算 的操作数都会先对其进行抽象的 ToInt32 操作,上面3种操作都没有实质对数字进行什么位运算,只是利用了它先对数字进行ToInt32操作的特性(因为ToInt32操作js没有提供方法接口)
相关文章
- 十大经典思维面试题_JS面试题大全
- JS全局变量和局部变量
- html js 全局 变量,JS定义全局变量
- 初识js中的闭包_Js闭包中变量理解
- 用JS获取地址栏url参数的方法_js的url是啥
- JS面试题-js新增基本数据类型BigInt
- 手机端复制文本的封装js-兼容ios与安卓
- 高德地图js api教程_高德地图sdk使用教程
- Vue.js – 引入外部 JS 文件
- JS设置定时器_js设置定时器
- js分类刷leetcode.动态规划
- 软件测试|selenium执行js脚本
- 【源码】PDF.js批注注释插件库(纯JS). 创建和保存PDF批注(PDF 高亮/签名/插图/截屏/文本框/画笔/多边形)-pdf.js
- JS实现汉字简体繁体转换详解编程语言
- mysqlmacOS下Node.js操作MySQL数据库(macosnodejs)
- 为什么我又从 Node.js 回到 Python
- 使用JS实现Redis数据读取(js读取redis)
- 使用 JS 操作 Redis:实现强大数据存储.(js调用redis)
- 使用JS控制Oracle数据库的更新(js控制oracle更新)
- Oracle中使用JS变量管理数据(oracle使用js变量)
- js取得当前网址
- js刷新页面的代码小结推荐
- 远离JS灾难css灾难之js私有函数和css选择器作为容器
- js延迟加载改变JS的位置加快网页加载速度
- Js实现当前点击a标签变色突出显示其他a标签回复原色
- js整数字符串转换为金额类型数据(示例代码)
- JS图像无缝滚动脚本非常好用