javascript中按位操作的应用,如何快速取整 判断字符串是否是包含某字符串
最近在看最基础的《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个时钟周期
所以乘法和除法在运行的速度上弱于加法减法。
但我们可以用位运算来对乘法和除法进行降维运算
参考
javascript中按位操作的应用,如何快速取整 判断字符串是否是包含某字符串的更多相关文章
- (译)JavaScript 中的正则表达式(RegEx)实操——快速掌握正则表达式,伴有随手可练的例子————(翻译未完待续)
(原文:https://blog.bitsrc.io/a-beginners-guide-to-regular-expressions-regex-in-javascript-9c58feb27eb4 ...
- JavaScript随机数组(数组、随机、取整、取值的过程)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- js 快速取整
我们要将23.8转化成整数 有哪些方法呢 比如 Math.floor( ) 对数进行向下取整 它返回的是小于或等于函数参数,并且与之最接近的整数 Math.floor(5.1) 返回值 //5 M ...
- JavaScript中instanceof与typeof运算符的用法及区别详细解析
JavaScript中的instanceof和typeof常被用来判断一个变量是什么类型的(实例),但它们的使用还是有区别的: typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typ ...
- JavaScript中的字符串
JavaScript字符串是JavaScript最重要的部分,可能比任何其他的数据类型都更多的用到. 所有的JavaScript对象共享的方法之一就是toString(). 字符串对象叫做String ...
- JavaScript中对日期格式化的新想法.
其实我们对与日期的显示,也就那么几种,不需要每次都传格式化字符串. 只要告诉函数你想要什么结果就好了,以下是在ios的JavaScript中我新写的日期格式化函数: /** 格式化日期 @param ...
- javaScript中的indexOf使用方法
JavaScript中的indexOf使用方法 概述 indexOf大小写敏感,其中的O要大写 对于字符串而言 indexOf返回字符串第一次出现的位置,若没有出现返回-1 1 var str = & ...
- php中除法取整的方法(round,ceil,floor)
PHP中遇到需要将除法所得结果取整的情况时,就需要用到以下方法: 1. round:四舍五入 round() 函数对浮点数进行四舍五入. 语法:round(x, prec) 参数 描述 x 可选.规定 ...
- 快速入门上手JavaScript中的Promise
当我还是一个小白的时候,我翻了很多关于Promise介绍的文档,我一直没能理解所谓解决异步操作的痛点是什么意思 直到我翻了谷歌第一页的所有中文文档我才有所顿悟,其实从他的英文字面意思理解最为简单粗暴 ...
随机推荐
- struts标签include传参的问题
传一个常量过去居然为null, <s:include value="/biz/customer/corp/module/franchisemanageright/corpFranchi ...
- HTML5初学---坦克大战基础
让小球动起来,根据键盘的W(上),D(右),S(下),A(左):键的点击移动小球 <!DOCTYPE html> <html> <head> <meta ch ...
- springmvc JSR303 Validate 注解式,校验数据
参考:http://www.cnblogs.com/liukemng/category/578644.html 先进行配置: <!-- 默认的注解映射的支持 --> <mvc:ann ...
- [ Python - 13 ] 批量管理主机必备模块
批量管理程序必备模块 optparse configparser paramiko optparse模块 简介: optparse模块主要用来为脚本传递命令参数功能 使用步骤: 1. i ...
- shell里面比较大小
#!/bin/bashif [ $1 -gt $2 ]then echo "$1>$2"else echo "$2>$1"fi# 数字判断一些命令 ...
- js中的数组(类)的相加
var wcf=[1,2,3,4,5] console.log(wcf[4]) var wcf1=[7,8,9,10,11] var wcf2=wcf+wcf1 console.log(wcf2) c ...
- java 获取当前系统时间
Java的Date获取时间函数都是deprecated 可以使用: https://stackoverflow.com/questions/5175728/how-to-get-the-current ...
- C# 对话框使用大全
对话框中我们常用了以下几种:1.文件对话框(FileDialog) 它又常用到两个: 打开文件对话框(OpenFileDialog) 保存文件对话(SaveFileDialog)2.字体对话框(Fon ...
- Ubuntu开机启动的方式
方法一:--------------------------------------------------1. 在/etc/init.d/下放置启动脚本,比如postgresqlroot@ubunt ...
- Swift_UIButton
1.初始化 /** UIButtonType.system:前面不带图标,默认文字颜色为蓝色,有触摸时的高亮效果 UIButtonType.custom:定制按钮,前面不带图标,默认文字颜色为白色,无 ...