JavaScript基础教程二进制位运算

JavaScript中的位运算是针对二进制数据提供的运算与操作。在JavaScript标准中规定了二进制位运算时其操作数长度为32位,其最高位为符号位,因此能够表示的有效数字位数为31位。本节主要介绍JavaScript中的二进制位的运算。


位运算基本操作符及说明

与其他程序设计语言类似,JavaScript所提供的二进制位运算主要包括AND(按位与运算)、OR(按位或运算)、XOR(按位异或运算)及左移、右移等相关操作。各类型操作描述如下表所示:

JavaScript二进制位操作符

位运算基本操作如描述如上表所示,此处需要注意问题是不要将二进制位运算与逻辑运算的And(与)、OR(或)、NOT(非)概念记混。由于JavaScript使用32位进行数值的二进制计算,因此在进行位操作时首先需要将10进制数值转换为二进制,然后按照二进制位操作要求进行位的操作。与运算、或运算、异或运算较为简单,只需要明确概念即可完成运算,我们将对非运算、左移、右移三个运算进行说明。

1、非运算

从定义可知非运算主要通过反转操作数完成计算,程序在具体执行非运算时按照以下步骤执行,以正数9为例对其进行非运算过程进行说明。

① 10进制转为32位二进制原码,符号位为0(正数)。如下表所示:

原码

② 将原码安位进行取反,结果如下:

按位取反获取反码

③ 此时我们得到是在内存中保存的形式(补码),需要将其转化为原码形式。从符号位可知反码为负数,因此需要按照补码转原码规则除符号位之外取反加1可获取对应原码。

计算结果

对于二进制非运算我们说明如上所示,因此9的非运算结果为-10,同理可以计算一个负数的非运算结果。作为负数时首先需要将其原码转为内存表示的补码,即除符号位之外其他位取反加一。在进行按位非运算,并将计算结果转换为原码。其过程描述如下图所示。

负数的按位与运算

计算结果可知最高位为1,即正数。正数的补码与原码相同,顾可知最终计算结果为8。即~(-9)=8;

2、左移、右移问题

按照位的左移与右移只需要注意按照规则要求左右移动指定位数,左移需要在右侧补充0,以保证位数,右移需要舍弃左侧对应的位数等。举例描述9<<2位操作过程示意如下(为方便演示我们以8位为例进行说明):

左移操作

左移操作描述如上图所示,可知9<<2 的结果为36。


以上给出JavaScript程序设计语言中二进制位操作,并重点对按位取反操作及左移、右移操作进行了说明。本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。更多程序设计相关教程及实例分享,期待大家关注与阅读!系列教程链接如下:

JavaScript基础教程(三)64位浮点数加法运算

JavaScript基础教程(二)变量、常量与运算符

JavaScript基础教程(一)课程说明

左移和右移的运算规则_一文读懂JavaScript位的与、或、异或、取反及左移右移操作...相关推荐

  1. 前端面试必会 | 一文读懂 JavaScript 中的 this 关键字

    this 是一个令无数 JavaScript 编程者又爱又恨的知识点.它的重要性毋庸置疑,然而真正想掌握它却并非易事.希望本文可以帮助大家理解 this. JavaScript 中的 this Jav ...

  2. 带你一文读懂Javascript中ES6的Symbol

    带你一文读懂Javascript中ES6的Symbol 前言 基础类型 Symbol Symbol.for 与 Symbol.keyFor Symbol.iterator Symbol.search ...

  3. psm倾向得分匹配法举例_一文读懂倾向得分匹配法(PSM)举例及stata实现(一)

    原标题:一文读懂倾向得分匹配法(PSM)举例及stata实现(一) 一.倾向匹配得分应用之培训对工资的效应 政策背景:国家支持工作示范项目( National Supported Work,NSW ) ...

  4. java中date类型如何赋值_一文读懂java中的Reference和引用类型

    简介 java中有值类型也有引用类型,引用类型一般是针对于java中对象来说的,今天介绍一下java中的引用类型.java为引用类型专门定义了一个类叫做Reference.Reference是跟jav ...

  5. python输入什么就输出什么_一文读懂Python的输入和输出

    本文介绍了Python的输入和输出,既然是Python代码,那么就一定有输出量,那么,Python是如何输出的呢? 输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'h ...

  6. gps导航原理与应用_一文读懂角速度传感器(陀螺仪)的应用场景

    前文我们大致了解陀螺仪的来历,原理和种类,那么,它与我们的日常生活有怎样的关系呢? 陀螺仪器最早是用于航海导航,但随着科学技术的发展,它在航空和航天事业中也得到广泛的应用.陀螺仪器不仅可以作为指示仪表 ...

  7. hdfs读写流程_一文读懂HDFS分布式存储框架分析

    一文读懂HDFS分布式存储框架分析 HDFS是一套基于区块链技术的个人的数据存储系统,利用无处不在的私人PC存储空间及便捷的网络为个人提供数据加密存储服务,将闲置的存储空间利用起来,服务于正处于爆发期 ...

  8. mysql 默认事务隔离级别_一文读懂MySQL的事务隔离级别及MVCC机制

    回顾前文: <一文学会MySQL的explain工具> <一文读懂MySQL的索引结构及查询优化> (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论 ...

  9. stata 求输出相关系数矩阵命令_一文读懂结果输出命令大全(上)

    目录 描述统计量 help tabstat   //Stata 官方命令 描述统计量组间均值差异检验 help ttest help ttable2 help estout 相关分析命令 help p ...

最新文章

  1. 影像组学视频学习笔记(22)-从atlas抠出想要的ROI做成mask文件、Li‘s have a solution and plan.
  2. C++之编码问题(Unicode,ASCII,本地默认)
  3. 深度学习(二十八)——SOM, Group Normalization, MobileNet, 花式卷积进阶
  4. sql 两个 in_SQL基础知识——IN运算符
  5. Wordpress 数据库查询错误 Call to a member function get_results() on null
  6. 以太币转帐速度_燃起来吧!一文带你读懂以太坊网络中的Gas、Gas Fee、Gas Price、Gas...
  7. bzoj 3351 [ioi2009]Regions
  8. count(1),count(*)与count(列名)到底有什么区别?
  9. Latex数学公式方程格式总结
  10. java freemarker 图片_java通过freemarker导出包含富文本图片的word文档
  11. 微信小程序使用iconfont字体图标
  12. 【数据结构】二叉树的节点总个数、叶子节点个数、第K层节点个数、二叉树的深度
  13. Java 自动类型转换,强制类型转换
  14. 如何快速入门并轻松简单的学习Linux?
  15. HDU - 最大报销额(01背包|贪心)
  16. nodeJS Express 删除 x-powered-by
  17. java opencv磨皮算法_深度学习AI美颜系列 - AI美颜磨皮算法[转]
  18. ar.js 追踪图片mark播放视频,并且根据是否识别控制视频播放操作
  19. 最低销售量计算机公式,用Excel算TOP项销售额占比?一个公式搞定所有!
  20. Ionic 3 实战开发指南

热门文章

  1. 六个问题让你更懂 React Fiber
  2. 每位开发人员都应该阅读的优秀源代码,长啥样?
  3. 2021 年了,算法岗位应该怎样准备面试?
  4. 通过了面试,却不会和hr聊薪水?
  5. 微软即将发布的.NET 5,蕴藏哪些最新特性?
  6. “不会MySQL,干啥都不行!”高级开发:工作、面试处处都会踩坑!
  7. 5G加速向纵深发展 中国电信联合产业链开展“5G创新终端商用合作行动”
  8. 入选 CVPR 2020的旷视论文,到底写了啥?
  9. 如何用Python画一只机器猫?| 原力计划
  10. 阿里云、腾讯云、UCloud 、华为云云主机对比测试报告