JS如何进行按位取反计算?一文带你看懂步骤
Admin 2022-01-12 群英技术资讯 1424 次浏览
JS如何进行按位取反计算?一些朋友可能不是了解什么是按位取反运算,按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果。那么JavaScript中如何来实现呢?下面我们一起来看看。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
在javascript中,可以利用“~”操作符来实现按位求反。如~1 = -2,~-3=2,~true=-2,~false=-1
“~”操作符可以查看指定值的二进制表示形式,并对该二进制操作数逐位进行取反操作
第 1 步:把运算数转换为 32 位的二进制整数。
第 2 步:逐位进行取反操作。
第 3 步:把二进制反码转换为十进制浮点数。
对 12 进行位非运算,则返回值为 -13。
console.log( ~ 12 ); //返回值-13
下图以算式的形式解析了对 12 进行位非运算的过程。

如何按位取反计算
按位取反的运算规则步骤:
转成二进制原码,最高位是符号位,0为正数,1为负数
十进制 ----> 原码
1 ----> 00000001
-1 ----> 10000001正数的反码就是原码,负数的反码是符号位不变,其余位取反
十进制 ----> 原码 ----> 反码
1 ----> 00000001 ----> 00000001
-1 ----> 10000001 ----> 11111110正数的补码还是原码,负数的补码是在反码的基础上加1
十进制 ----> 原码 ----> 反码 ----> 补码
1 ----> 00000001 ----> 00000001 ----> 00000001
-1 ----> 10000001 ----> 11111110 ----> 11111111正整数补码取反之后符号位置为1,是一个负整数,所以再按照负整数计算补码的方式逆运算得到原码
逆运算得到原码,首先将取反的补码转成反码,公式:反码=补码 - 1,然后将反码转成原码,符号位不变,其他位取反
十进制 ----> 原码 ----> 反码 ----> 补码 ----> 补码取反 ----> 取反补码转成反码 ----> 转成原码
1 ----> 00000001 ----> 0000001 ----> 00000001 ----> 11111110 ----> 11111101 ----> 10000010负整数补码取反之后符号位置为0,是一个正整数,因正整数的反码与补码就是本身,所以不需要再进行逆运算
十进制 ----> 原码 ----> 反码 ----> 补码 ----> 补码取反得原码
-1 ----> 10000001 ----> 11111110 ----> 11111111 ----> 00000000 十进制 ----> 原码 ----> 反码 ----> 补码 ----> 补码取反 ----> 取反补码转成反码 ----> 转成原码 ----> 转成二进制
1 ----> 00000001 ----> 0000001 ----> 00000001 ----> 11111110 ----> 11111101 ----> 10000010 ----> -2 十进制 ----> 原码 ----> 反码 ----> 补码 ----> 补码取反得原码 ----> 转成二进制
-1 ----> 10000001 ----> 11111110 ----> 11111111 ----> 00000000 ----> 0所以,~1=-2,~-1=0
取反再取反~~的作用
操作符~, 是按位取反的意思,表面上~~(取反再取反)没有意义,实际上在JS中可以将浮点数变成整数。
console.log(~~1.11); //1 console.log(~~-25.11); //-25
关于JS如何进行按位取反计算的内容就分享到这,上述方法具有一定的参考价值,大家可以可以了解看看,希望对大家学习JavaScript有帮助,想要了解更多可以继续浏览群英网络其他相关的文章。
文本转载自PHP中文网
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了React中的权限组件设计,整个过程也是遇到了很多问题,本文主要来做一下此次改造工作的总结,对React权限组件相关知识感兴趣的朋友一起看看吧
目录引言零、知识铺垫CSS选择器一、什么是父子组件二、父组件调用子组件的方法三、父组件向子组件传值子组件使用@input装饰器接收数据父组件使用方括号[]发送数据升级:子组件通过set方法监听传入数据变化另一种升级:子组件通过ngOnChanges()生命周期钩子监听传入数据变化四、子组件向父组件传值子组件向父组件弹射
本文主要给大家分享的关于vue指令的内容,下面介绍了一些基本指令以及用法,小编认为是比较实用的,因此分享给大家作参考,感兴趣的朋友们可以了解一下。
目录vue数据字典取键值vue项目的字典问题在utils中写一个dict.js的文件在main.js中引用刚才封装好的getDict方法之后我们就可以在系统中使用vue数据字典取键值首先:项目里的数据字典路由已经配好进入项目页面引入数据字典import { getTypeValue } from @/api/dict/
什么是Express中间件?Node中要怎么使用?下面本篇文章就来给大家介绍一下Express中间件的简单使用方法,希望对大家有所帮助!
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008