javascript的位操作、整数、二进制
位与(x&y):对操作数进行二进制与的操作,如果两个操作数的某一位两个都为1,将对应的结果位设为1。
0x0007 & 0x0003 = 0x0003
  
\
一个小型年老棕色的狗:64 + 16 + 8 + 2 = 90
搜索一个有特定标记的宠物,只需要和搜索值进行位与操作。
//搜索大型 年轻 白色的宠物
var searchFlags = 128 + 32 + 4;
var pets = []; //宠物
var numPets = pets.length;
for(var i = 0; i < numPets; i++){
if(searchFlags & pets[i].flags === searchFlags){ }
}
位或(x|y):对操作数进行二进制或的操作,如果两个操作数的某一位只要有一个为1,将对应的结果位设为1。
0x0007 | 0x0003 = 0x0007
位异或(x^y):对操作数进行二进制异或的操作,如果两个操作数的某一位只有一个为1,将对应的结果位设为1。
0x0001 ^ 0x0000 = 0x0001 0x0001 ^ 0x0001 = 0x0000
//toggle在0和1之间转换(假设开始toggle等于0或者1)
toggle ^= 1;
toggle = toggle ? 0 : 1;
位非(~x):对所有位进行取反(如果操作数是有符号整数(最左位为符号位),则~操作符等于取负减1)。
11100111 取反为 00011000
位左移(x<<numBits):对x的二进制向左移numBits位。所有位向左移,最左位丢失,0填补最右的位。等价于无符号整数的乘法 x*(2^numBits)
y = 5 << 1; // y=10; => Math.floor(5*(2^1))
y = 5 << 2; // y=20; => Math.floor(5*(2^2))
y = 5 << 3; // y=40; => Math.floor(5*(2^3))
算术位左移(x>>numBits):对x的二进制向右移numBits位。除了最左符号位,所有位向右移,最右位丢失。等价于有符号整数的除法 x/(2^numBits)
y = 5 >> 1; // y=5; => Math.floor(5/(2^1))
y = 5 >> 2; // y=2; => Math.floor(5/(2^2))
y = 5 >> 3; // y=1; => Math.floor(5/(2^3)) x = y >> 0; //是一个快速的 x = Math.floor(y)
javascript的位操作、整数、二进制的更多相关文章
- JavaScript类型化数组(二进制数组)
		
0.前言 对于前端程序员来说,平时很少和二进制数据打交道,所以基本上用不到ArrayBuffer,大家对它很陌生,但是在使用WebGL的时候,ArrayBuffer无处不在.浏览器通过WebGL和显卡 ...
 - [JavaScript]为JS处理二进制数据提供可能性的WEB API
		
写这篇博客的起源是在div.io上的一篇文章<你所不知道的JavaScript数组>by 小胡子哥下的评论中的讨论. 因为随着XHR2和现代浏览器的普及,在浏览器当中处理二进制不再向过去那 ...
 - JavaScript  里面的整数 位 操作
		
JavaScript 整数位操作. 与 操作符 & val num1 = 10; val num2 = 11; val num3 = num1 & num2; // num3 == 1 ...
 - 在Python中,如何用一行代码去判定整数二进制中的连续 1
		
利用字节位操作如何判断一个整数的二进制是否含有至少两个连续的1 的方法有多种,大家第一反应应该想到的是以下的第一种方法. 方法一:从头到尾遍历一遍每一位即可找出是否有连续的1存在 这个方法是最普遍的. ...
 - 22.整数二进制表示中1的个数[Get1BitCount]
		
[题目] 输入一个整数,求该整数的二进制表达中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. [分析] 如果一个整数不为0,那么这个整数至少有一位是1.如果我们把这个整数 ...
 - 《剑指offer》-统计整数二进制表示中1的个数
		
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 直观思路就是把二进制表示从右往左统计1的个数.直接想到移位操作来迭代处理.坑点在于负数的移位操作会填充1.有人贴出了逻辑移位 ...
 - 笔试算法题(14):整数二进制表示中的1 & 判定栈的push和pop序列是否对应
		
出题:输入一个整数,要求计算此整数的二进制表示中1的个数 分析: 如果整数表示为k,当其是负数的时候,使用1<<i分别检测k的每一位:当其位整数的时候,则k/2表示将其二进制表示右移一位, ...
 - JavaScript实现大整数减法
		
继上一篇博文写了大整数加法之后,我又模拟上篇博文的算法,自己实现了大整数减法. 大整数减法相对于加法来说,稍微复杂一点.由于要考虑一些情况: 1. 两个数相减,可能会出现结果为正.负和0三种情况: 2 ...
 - Javascript实现大整数加法
		
记得之前面试还被问到过用两个字符串实现两个大整数相加,当时还特别好奇好好的整数相加,为什么要用字符串去执行.哈哈,感觉当时自己还是很无知的,面试官肯定特别的无奈.今天在刷算法的时候,无意中看到了为什么 ...
 
随机推荐
- oracle动态注冊參数local_listener
			
local_listener參数有两种书写格式,提供了不同的功能. 监听文件上,1521和1526port上都有动态监听port. [oracle@dbsv admin]$ cat listener. ...
 - 阿里巴巴2015研究project普通笔试题,与答案
			
欢迎您对这篇文章的其他建议.我可以留言在以下平台. 个人博客网站:www.anycodex.com/blog/ Csdn博客网站:http://my.csdn.net/?ref=toolbar 微博: ...
 - Linux下搭建tomcat集群全记录(转)
			
本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法.为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:ap ...
 - HDU 1226 超级密码 (搜素)
			
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1226 题意简单,本来是一道很简单的搜素题目. 但是有两个bug: 1.M个整数可能有重复的. 2.N可 ...
 - Java中定时器的使用
			
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; import java.util.T ...
 - 【转向Javascript系列】深入理解Generators
			
随着Javascript语言的发展,ES6规范为我们带来了许多新的内容,其中生成器Generators是一项重要的特性.利用这一特性,我们可以简化迭代器的创建,更加令人兴奋的,是Generators允 ...
 - ps、top 、free查看用户资源信息
			
查看root用户的进程信息. 运行命令: ps -u root 查看oracle用户的进程信息. 运行命令: ps -u oracle 若查看现在的资源占用情况,如何呢? 运行命令: top 可以 ...
 - ECSHOP分类页面筛选功能(按分类下子分类和品牌筛选)
			
其实分类页面里面本来就有相关的品牌.属性.分类的筛选功能在category.php和模板加上相应的功能即可 1.读出当前分类的所有下级分类 $chlidren_category = $GLOBALS[ ...
 - pygame各个模块概述
			
在pygame中,有很多模块,每个模块对应着不同的功能,如果我们知道这些模块是做什么的,那么,对我们的游戏开发会起到关键性的作用. 我们就说说pygame中的各个模块吧!!! #pygame modu ...
 - 21天教你学会C++