javascript中按位操作的应用,如何快速取整 判断字符串是否是包含某字符串
2024-10-21 07:35:00
最近在看最基础的《javascript高级程序设计》看的灰常慢,看到按位运算这里,突然反思,这种鬼操作到底有什么实际的应用呢?
按位运算符有6个
&
按位与:a & b
|
按位或:a | b
^
按位异或:a^b
~
按位取非:~a
>>
右移: a>>2
<<
左移:a<<2
>>>
无符号右移:a >>> b
实际应用
求负数减1 反转操作
console.log(~true) //-2
console.log(~false) // -1
快速判断字符串中首付含有某个字符
if (~'mayufo'.indexOf('may')) {
console.log(true);
}
如果是-1 ~(-1) = 0
快速取整
console.log(~~30.79); //30
按位异或快速取整
console.log(30.79 | 0); //30
判断奇偶
console.log((32 | 0) & 1); //0为偶数,1为奇数
交换变量
var a = 1,
b = 2;
console.log(a, b);
a ^= b;
b ^= a;
a ^= b;
console.log(a, b);
快速进行幂计算
var c = 3; d = 2.45;e=16;
console.log(c<<3);//16 等于3*(2的3次方)
console.log(d>>0);//2(向右移0位,小数部分丢失,取整)
console.log(e>>3);//2 等于16/(2的3次方)
优化乘法和除法性能
加减计算只需要1个时钟周期
乘法需要10个时钟周期
除法需要30个时钟周期
所以乘法和除法在运行的速度上弱于加法减法。
但我们可以用位运算来对乘法和除法进行降维运算
参考
最新文章
- NGUI裁剪模型和粒子
- sql server如何分组编号
- MySQL实现嵌套集合模型
- 使用C#设计Fluent Interface
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
- React高级特性
- 侧菜单栏的实现SlidingPaneLayout
- ParameterDirection参数类型
- php使用技巧--之链接地址
- 谈谈css中的before和after
- XAMPP安装及配置注意事项
- 芝麻HTTP:PhantomJS的安装
- python ddt数据驱动(简化重复代码)
- python至winreg模块
- EmBitz1.11中将左边的目录弄出来
- Ubuntu 16.04配置国内高速apt-get更新源
- jQuery之双下拉框
- linux系统下安装ssl证书(tomcat)
- IPC_Binder_java_1
- 制作macOS10.12系列的系统镜像文件
热门文章
- SSH的简单入门体验(Struts2.1+Spring3.1+Hibernate4.1)- 查询系统(下)
- 移动开发之css3实现背景渐变效果
- 在.NET4.5项目中添加HttpClient引用的办法
- MySQL数据库中的Date,DateTime,int,TimeStamp和Time类型的对比
- 【转】jenkins插件pipeline使用介绍
- vs2012将项目同步到github
- SpringCloud Gateway(八)
- uestc1633
- Linux命令之umount
- 【数学期望】【高斯消元】bzoj3143 [Hnoi2013]游走