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

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

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

引子

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


    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

按位或|

或运算法则:只有当2个位都是0时,或的结果才是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

逗号表达式:
一般形式:表达式1,表达式2,表达式3,......表达式n

求解过程:先计算表达式1的值,再计算表达式2的值,......一直计算到表达式n的值。最后整个表达式的值是表达式n的值。 

看下面几个例子:

 1)x = 8*2, x*4; /*整个表达式为逗号表达式,它的值为64,x的值为16*/

 2)(x = 8*2, x*4) , x*2; /*整个表达式为逗号表达式,它的值为32,x的值为16*/

 3)x = (z=5,5*2); /*整个表达式为赋值表达式,它的值为10,z的值为5*/


AI译制技术访谈:从术语表到字幕对齐的完整工作流 在AI视频译制与字幕翻译领域,技术访谈因其术语密集、口语干扰多、上下文依赖强,远比普通口播更难以处理。理解音频处理、插件格式、采样率等专业概念,是确保翻译准确的前提。本文从译制的基本原理出发,介绍如何通过术语表先行、保留原始时间轴、分段清洗等工程实践,构建一条面向音乐软件架构访谈的AI译制流水线。无论你是处理外文技术视频、批量转换播客,还是搭建本地半自动字幕工作流,都能从中获得可落地的验收标准与排错思路。 阅读详情

相关推荐

告别“盲开”:手把手教你用MCU内置比较器搞定BLDC无感方波启动(附代码片段)

本文详细介绍了如何利用MCU内置比较器实现BLDC无感方波启动,解决传统无传感器控制中的'盲开'问题。通过虚拟中性点电路设计和三段式启动流程,结合反电动势检测和过零检测技术,提供了一套经济高效的解决方案,并附有可直接移植的代码片段,助力工程师快速实现可靠的无感控制。

weixin_33694172的博客 503

JS中的按位运算符们

今天读书《You Don’t Know JavaScript》,读到强制类型转换一章,其内有提到了JavaScript中的位运算符,正好原来在模拟电路与数字电路课上接触过一些相关的原理,写此文整理一下 经过一番搜罗,基本上是这几个: 按位与运算符:& 按位或运算符:| 按位异或运算符:^ 按位取反运算符:~ 右移运算符:>> 左移运算符:<< 无符号右移运算符:>>> 1. 按位与运算符:& 性质:二元运算符 用法:6 & 8 (操.

onmywayyoung's blog 2235

别再搞混了!MATLAB通信仿真中EbN0转SNR的保姆级公式推导与避坑指南

本文深入解析MATLAB通信仿真中EbN0与SNR转换的核心公式,揭示数字仿真与理论系统的关键差异。通过真实案例展示错误参数设置导致的隐蔽问题,并提供完整的参数自查清单和正确实现代码,帮助工程师和学生避免常见错误,确保仿真结果准确可靠。

weixin_28746223的博客 348

js按位操作符 & | ^ ~

按位操作符(操作对象被转变为32位二进制位): &:按位与,两个操作数相应的比特位都为1时,结果才为1,否则为0 比如:3 & 2 => 0011 0010 -------- 0010 => 2 结果为: 2 再比如:18 & 7 => 1 0010 0 0111 --------- 0 0010 => 2 结果为: 2

xiongqiangwin1314的专栏 648

基于STM32的Modbus TCP多主站数据监测

Modbus TCP通信协议在STM32上实现,STM32作为服务器采集内部传感器数据,并通过ADC进行转换,存入寄存器。两个PC机作为客户端访问服务器,服务器通过Socket通信实现监听连接,将数据发送给客户端。

hyp12347的博客 4295

【从零开始学习 UVM】1.1、UVM 概述 —— Preface

【从零开始学习 UVM】1.1、UVM 概述 —— Preface

努力,加油每一天鸭~ 826

js中的各种运算符(进制转换问题)

1.n进制(2-16)转十进制var a = '0xa' 里面填n进制数字例如0xaparseInt(a,16) // 10 第一个填要转的数,第二个填进制2.十进制转n进制var a = '' 里面填一个十进制数a.toString(n) 2-16进制 转哪个填那个 算术运算符中按位左移(<<) ..<<.. 将第一个操作数的所有二进制位向左移动指定位数例:10&lt...

SevenLee的个人博客 800

电容式三点式振荡电路/电感式三点振荡电路基础知识及Multisim电路仿真

摘要:三极管振荡电路利用放大特性与正反馈实现自激振荡,需满足巴克豪森条件(增益≥1,相位匹配)。核心由放大级、反馈网络、选频网络和稳幅环节构成。主要分为三类:1)LC/RC正弦波振荡电路(如电容三点式、电感三点式),输出高频/低频正弦波;2)多谐振荡电路,通过电容充放电产生方波;3)张弛振荡电路,生成锯齿波等。设计需关注相位匹配、增益控制和元件适配。LC振荡频率由谐振参数决定,RC振荡由时间常数控制。稳幅机制通过非线性或主动元件维持等幅输出。该电路在信号发生、时钟源等领域有广泛应用。

XU157303764的博客 2039

「硬核JS」令你迷惑的位运算

写在前面今天,我们来学习一下 JS 操作符中的位操作符在 JS 这门语言的标准里,描述了一组可以用来操作数据值的操作符,其中包括 数学操作符、位操作符、关系操作符、相等操作符、布尔操作符...

isboyjc的博客 444

PCL点云库入门(第1讲)——PCL库简介和安装(Win10/11+VS2019+PCL 1.12.0)

PCL,全称为,即点云库,是一个专注于2D/3D图像和点云处理的大型开源项目。该项目最初由斯坦福大学的杰出计算机视觉专家Radu博士及其团队开发和维护,经过十余年的发展,目前(2024年12月)已更新至1.14.1版本。PCL点云库集成了众多尖端的点云处理算法,这些算法不仅包括基础的滤波、特征估计、表面重建、配准、模型拟合和分割等,还涵盖了更高级的功能,如点云数据的语义理解、场景解析以及动态环境下的实时处理。这些算法能够对含有噪声的点云数据进行有效过滤,去除异常值;

qq_36812406的博客 1万+

educoder实训——计算几何形状的表面积与体积

educoder python实训

qq_41234663的博客 1230

JavaScript中的进制转换、或运算、与运算与位运算

一、进制之间的转换(代码实现)思路:以十进制数作中间量,其他进制之间互相转换前先转换成十进制。 复制代码1. 其他进制转换成十进制&gt; parseInt(非十进制数,第一个参数进制数)此方法可以将非十进制数字转换成十进制数字 var num=111; alert(parseInt(num,2)); // 7 复制代码2. 十进制转换成其他进制&gt; 十进制数.toString(要转换成的进...

weixin_34348805的博客 146

YOLOv11改进策略【Head/分割头】| 结合CVPR-2024 中的DynamicConv 动态卷积 改进分割头, 优化模型(独家改进)

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 2311

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JavaScript的位操作符你知道吗?

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

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JavaScript的位操作符

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

start_XUEBA的博客 338

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
上一篇: 微信小程序php、nodejs环境配置
下一篇: js 将Date 日期对象与时间戳互相转换
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值