JS中的位操作符:“与,或,非,异或,左移,右移”

&、|、^ 到底在干嘛?一次讲透 JavaScript 位操作符 在 JavaScript 的世界里,有一群你可能很少用、却经常在源码和面试中遇到的“神秘符号”——位操作符。它们只和 0、1 打交道,却掌控着性能、权限和底层逻辑。今天,小米就带你走进二进制王国,用一个有趣的故事,把位操作符一次讲清楚。 阅读详情

avascript有算数操作符,赋值操作符,比较操作符,逻辑操作符,同时也有位操作符。

引子
先想一想,如下,该输出什么答案?


    console.log('5 & 1 :', ( 5 & 1 ));
    console.log('5 | 1 :', ( 5 | 1));
    console.log('~ 5:', (~5));
    console.log('5 ^ 1 :', ( 5 ^ 1));
    console.log('5 << 1 :', ( 5 << 1));
    console.log('5 >> 1 :', ( 5 >> 1));
1
2
3
4
5
6
7
十进制转二进制
先将值转换成二进制。 


5除以2余1,2除以2余0,1除以2余1。将余数倒过来,就得到5的二进制数101。 同理可得1的二进制数1。

与&
与运算法则:两位同时为“1”,结果才为“1”,否则为0 
5 & 1 = 1

或|
或运算法则:两位其中一个为“1”,结果为“1”,否则为0 
5| 1 = 5

非
非运算法则:单目运算符

二进制原码:0000 0000 0000 0000 0000 0000 0000 0101 
取反操作后:1111 1111 1111 1111 1111 1111 1111 1010 
有符号整数都是用补码来表示,而补码=反码+1 
1.先求反码:1000 0000 0000 0000 0000 0000 0000 0101 
2.再求补码:1000 0000 0000 0000 0000 0000 0000 0110 
最高位代表符号位 1 表示负数,0 表示正数 
~5 = -6

异或^
异或运算法则:两位不同,结果为“1”,否则为0 
5^1 = 4

左移
左移运算法则:将数值向左移动若干位,用0补足 
5<< 1 = 10

右移
右移运算法则:将数值向右移动若干位 
5>>1 = 2
————————————————
版权声明:本文为优快云博主「foreverling_ling」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/foreverling_ling/article/details/61417649

Vector CANape的使用记录 开门见山,今天想和大家分享下CANape使用记录,分享原因是近日在分析一个客户现场软件问题时,需要用到CANape来实时的监测ECU中的变量,因为之前对CANape的认知比较浅薄,觉得标定工程师使用他就足够了,但是这次的经历让我觉得需要写点东西来记录自己学习并使用他的过程。 相信大家能够在网上找到很多关于如何使用CANape的文章,从新建Project到后面的数据的观测、保存以及回放等等。我个人也是这么学过来的,所以我不打算从那些方面着手去描述如何使用她,而是根据我的真实使用过程以及问题的抛出到如何解决来 阅读详情

相关推荐

【外挂编程】外挂编程技术揭秘(二)

引言: 经过上一篇文章大家可能对外挂有了一个初步的认识,之前的内容比较简单,应该大家很容易掌握。我写作过程中我发现三个篇幅可能写不完,后续还可能要多加几个篇幅,这篇我们就先以内存挂为主吧。话不多说了,让我们开始吧。 文章中代码github地址: https://github.com/Diamonds-ZhaoYu/hz_example 环境要求: 系统:Windows 语言...

c-rain 4034

关于移位符>>和普通除以2的区别!这两个是不一样的

首先,本文为原创,转载请声明。 直接上结果 然后 所以说移位除了快之外,负数出来的结果还不一样 这是因为 为了能够使用右移操作来完成除法运算,我们必须再定义一个移位操作:算术右移。5算术右移操作与普通的右移操作(逻辑右移)相同,只有一点例外:算术右移操作并不向最高位移入0,而是将最高位复制回自身;也就是说,在移位的时候并不对最高位进行修改,如图2-

要考甲级的fairy 6642

slam_toolbox 简介和使用

专为移动机器人在未知环境中实时构建地图和定位设计。它适用于2D和3D环境,支持多种机器人平台和传感器配置。

weixin_74808846的博客 3307

JS中或﹑与﹑否﹑异或﹑左移﹑右移﹑头尾补零的右移运算符

内部采用补码形式表示负数,即需要将这个数减去1,再取一次反,然后加上负号,才能得到这个负数对应的10进制值。上面代码中,-4左移一位得到-8,是因为-4的二进制形式是11111111111111111111111111111100,左移一位后得到11111111111111111111111111111000,该数转为十进制(减去1后取反,再加上负号)即为-8。上面表达式中,0(二进制00)与3(二进制11)进行异或运算,它们每一个二进制位都不同,所以得到11(即3)。,就是一个数的二进制形式向右移动时,.

weixin_46369590的博客 2486

Tesla V100 在 Windows 下的驱动选择与模式切换实战

本文详细解析了Tesla V100专业计算卡在Windows系统下的驱动安装与模式切换实战。针对设备管理器识别但任务管理器“隐身”的常见问题,文章指出其默认TCC模式为纯计算设计,并指导用户正确选择数据中心或GRID驱动。核心在于通过注册表修改或驱动选择,在高效的TCC模式与便于监控的WDDM模式间切换,同时提供了nvidia-smi命令行监控与AI框架测试等稳定使用方案。

weixin_29247219的博客 1807

论文理解【LLM-OR】—— 【PaMOP】Guiding Large Language Models in Modeling Optimization Problem

针对 LLM 求解运筹优化任务,PaMOP 通过约束划分树分离子问题,实现复杂优化问题的分块建模,并结合求解器反馈与反向翻译一致性检查迭代纠错,降低子任务复杂度,提升可执行率与建模准确性。

佚失的诗篇 1007

JavaScript 中按位的操作(与、或、异或、按位取反、左移、右移)

原文链接:https://blog.youkuaiyun.com/romeo12334/article/details/81234991。3.发现符号位(即最高位)为 1(表示负数),将除符号位之外的其他数字取反 = 1000001。1.将 1(这里叫: 原码)转二进制 = 00000001。4.未位加1取其补码 = 1000010。2.按位取反 = 11111110。5.转换回十进制 = -2。

wxl1390的博客 730

Exposure Fusion

MertensTMO原理详解: 文章:2007年Exposure Fusion 论文链接:http://ntp-0.cs.ucl.ac.uk/staff/j.kautz/publications/exposure_fusion.pdf 论文代码:C版本:https://github.com/JawThrow/ExposureFusion python版本:https://github.com/lzocro/Exposure-Fusion matlab版本:https://github.com/Mericam

大长腿不解释 1652

与、或、同或、异或

以“与”运算为例说明如下:我们知道在C语言中long型占4个字节,int型占2个字节,如果一个long型数据与一个int型数据进行“与”运算,右端对齐后,左边不足的位依下面三种情况补足,方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。(1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。

m0_61479247的博客 9283

OpenClaw进阶实战(二十五):抖音企业号——私信回复与视频评论分析

摘要:本文介绍抖音企业号自动化运营方案,突破抖音强风控体系的技术挑战。针对内容生产、私信互动和账号矩阵三大场景,提出混合架构解决方案: 私信自动化:结合关键词触发与随机延迟(45秒±15),实现拟人化回复,支持价格咨询/商务合作等高优先级消息识别 混合技术栈:官方API(合规)+真机RPA(覆盖长尾需求)+AI辅助生成(脚本→剪辑→发布闭环) 安全策略:通过设备指纹模拟、行为间隔随机化和内容差异化处理规避风控,提供每日200条的安全操作阈值。配套OpenClaw技能实现一键部署,包含cookie配置、回复规

PeterPan的博客 144

【WRF-Chem工具】pyVPRM 计算大气与陆地植被之间的 CO₂ 交换通量

pyVPRM 计算大气与陆地植被之间的 CO₂ 交换通量

WW、forever的博客 210

js左移运算符_JS中的位操作符:“与,或,非,异或,左移,右移”

Javascript有算数操作符,赋值操作符,比较操作符,逻辑操作符,同时也有位操作符。引子先想一想,如下,该输出什么答案?console.log('5 & 1 :', ( 5 & 1));console.log('5 | 1 :', ( 5 | 1));console.log('~ 5:', (~5));console.log('5 ^ 1 :', ( 5 ^ 1));conso...

weixin_39827315的博客 367

Allegro技巧----相同模块复用实现快速布局

使用Allegro软件进行PCB Layout设计时,当电路图中有很多路相同的模块,使用模块复用的的操作方法,可以显著提高工作效率,同时也可以使PCB布局在整体上显得美观。 如图,有8个相同的ADC采样电路模块,它们在原理图中的电路也是一样的,对于这多个相同的电路模块,如果一个个元器件布局很明显做了很多重复机械的劳动,效率低下;但是强大的Allegro软件早就考虑到了这点,只需要在PCB中做好其中的一个,则其余相同的模块通过复用的方式,可以快速完成,方便省事还美观。 具体步骤: 1.首先完成一个模块的PC

sinat_15677011的博客 5655

JavaScript之位操作符

JavaScript之位操作符1. 什么是位操作符以及作用2. 作操作符的类型2.1 按位非(~)2.2 按位与(&)2.3 按位或(|)2.4 按位异或(^)2.5 左移(<<)2.6 有符号右移(>>)2.7 无符号右移(>>>)3. 备注3.1 关于整数 1. 什么是位操作符以及作用 位操作符用于整数的底层操作,也就是操作内存中表示数据的位。即,将数值转化为32位数字(32位的二进制),再进行操作。 如果将位操作符应用到非数值,那么会先使用Number

小栗子的博客 617

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaScript的位操作符你知道吗?

什么是JavaScript位操作符?🤔其实 JavaScript 位操作符是数值的底层操作,用来操作内存中表示数据的比特位,我们都知道 JavaScript 中的所有数值都是以 64 位格式存储的数据,我们要说的位操作符不会直接运用到64位表示,而是先将值转换为 32 位整数进行位操作,再转换为 64 位。......

世界和我们都不该止步于此 667

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JavaScript的位操作符

JavaScript的位操作符有:按位非,按位与,按位或,按位异或,左移,有符号的右移,无符号的右移。 基础: ECMAScript 整数有两种类型:有符号整数(允许用正数和负数)和无符号整数(只允许用正数)。在 ECMAScript 中,所有整数字面量默认都是有符号整数,有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数。 ECMAScript...

start_XUEBA的博客 338

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

js位操作符主要有哪些?

请注意,由于JavaScript使用IEEE 754标准表示浮点数,对有符号浮点数执行位操作可能不会得到预期的结果,因为位操作是在32位整数上进行的,而浮点数的内部表示包含指数和尾数部分。例如,如果你想要将一个数字的特定位设置为1,你可以将该数字与一个只有该位为1的掩码进行按位或操作。但是,在JavaScript中,整数是以32位的形式存储的,所以实际上我们得到的是32位整数的按位非结果。对a和b的每一个二进制位执行逻辑与操作。按位与操作会比较这两个数字的每一位,只有当两个相应的位都是1时,结果位才为1。

baifangfang521的博客 945

【JavaScript】JavaScript位操作符

JavaScript位操作符 位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值。ECMAScript 中的所有数值都以 IEEE-754 64 位格式存储,但位操作符并不直接操作 64 位的值。而是先将 64 位的值转换成 32 位的整数,然后执行操作,最后再将结果转换回 64 位。对于开发人员来说,由于 64 位存储格式是透明的,因此整个过程就像是只存在 32 位的整数一样。 对...

ABing 247

JavaScript操作符-位操作符

ECMA-262描述了一组用于操作数据值的操作符,包括 算术操作符(如加号和减号)、位操作符、关系操作符和相等操作符。ECMAScript操作符的与众不同之处在于,它能够适用于很多值,例如字符串、数字值、布尔值、甚至对象。不过在应用于对象之前,相应的操作符通常会调用对象的valueOf()和(或)toString()方法,以便取得可以操作的值。 位操作符 位操作符用于在最基本的层次上,即按照内存中...

weixin_30737363的博客 99

JS48 JS中的二进制运算和按位操作符

JavaScript中的二进制运算 整数 JavaScript中,将十进制数字转换为二进制的方法是使用toString(2)方法,对于正整数的返回值是从不为零的首位开始返回: (8).toString(2); // 1000 对于负数,不会返回其真正的二进制编码(即其相反数的补码),而是直接利用符号-来表示: (-8).toString(2); // -1000 所以,想要求出负数的二进制编码...

多啦的博客 3689

位操作符的基本运算符及实际应用

文章目录一、位操作符的基本运算符1.按位非2.按位与3.按位异或4.按位或5.左移6.有符号右移7.无符号右移二、实际运用1.使用&运算符判断奇偶2.使用~~,<<,>>>,>>.|运算符取整3.使用^运算符实现值交换4.使用^运算符判断两个数是否相等 在学习位运算符的同时,经常会思考这些操作符到底在实践当中有何用处?接下来跟大家分享我的理解。 提示:以下是本篇文章正文内容,下面案例可供参考 一、位操作符的基本运算符 位操作符用于数值的底层操作,也就是.

weixin_46139393的博客 1182

浅谈JavaScript位操作符

位操作符的基本概念 因为ECMAscript中所有数值都是以IEEE-75464格式存储,所以才会诞生了位操作符的概念. 位操作符作用于最基本的层次上,因为数值按位存储,所以位操作符的作用也就是操作数值的位.不过位操作符并不能操作64位的值.所以位操作符会先将64位的值转换成32位的值,然后执行操作,最后再将结果转换成64位的值. 但对于...

weixin_33729196的博客 278
上一篇: 微信小程序开发—(八)canvas绘制图形
下一篇: Js字符串与十六进制的相互转换
oshan2012
博客等级 码龄15年 300粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值