当前位置: 首页 > news >正文

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)

 

转载于:https://www.cnblogs.com/eyeear/p/4651509.html

相关文章:

  • .net 按比例显示图片的缩略图
  • 线上解决问题分析
  • JavaScript定时机制setTimeout与setInterval研究
  • UVA 11174 Stand in a Line 树dp+算
  • HttpSessionListener的用法
  • JasperReports报表组15
  • BZOJ 1264: [AHOI2006]基因匹配Match( LCS )
  • 用Linux命令对两个文件进行连接操作
  • 一、小按钮和下面板---调试面板
  • memcached全面剖析–5. memcached的应用和兼容程序
  • 常见浏览器的兼容问题
  • 如何解决“不能打开数据库,用户NT AUTHORITY\NETWORK SERVICE登录失败”的错误呢?...
  • 基于vitamio的网络电视直播源码
  • Unity3D 导出apk 在真机调试时, 使用光贴图的模型丢失材质的BUG
  • 将C盘一个文本文件复制到D盘。
  • 4. 路由到控制器 - Laravel从零开始教程
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Consul Config 使用Git做版本控制的实现
  • create-react-app项目添加less配置
  • DOM的那些事
  • ECMAScript6(0):ES6简明参考手册
  • ES6系统学习----从Apollo Client看解构赋值
  • gulp 教程
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue2.x学习三:事件处理生命周期钩子
  • vue中实现单选
  • 对超线程几个不同角度的解释
  • 解决iview多表头动态更改列元素发生的错误
  • 聊聊flink的TableFactory
  • 那些年我们用过的显示性能指标
  • 用Canvas画一棵二叉树
  • 湖北分布式智能数据采集方法有哪些?
  • 整理一些计算机基础知识!
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (23)Linux的软硬连接
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (一)kafka实战——kafka源码编译启动
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)Windows2003安全设置/维护
  • (转)负载均衡,回话保持,cookie
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .describe() python_Python-Win32com-Excel
  • .NET CLR基本术语