将js负数转换为正数的方法
发布时间:2025-05-22 08:42:51 发布人:远客网络
一、将js负数转换为正数的方法
1、前端js脚本中的数字变量还可以执行加,减js正数,乘和除的数学运算.在本文中js正数,Asuka Muyu博客讨论了如何在JS代码中将负数转换为正数.负绝对值法.
2、JS中通常使用两种方法将负数转换为正数(取绝对值)
3、js abs()方法将负数转换为正数(js取绝对值)
4、abs():该方法返回数字的绝对值.
二、重温js——位运算
1、位运算是在数字底层(即表示数字的 32个数位)进行运算的。由于位运算是低级的运算操作,所以速度往往也是最快的(相对其它运算如加减乘除来说),并且借助位运算有时我们还能实现更简单的程序逻辑,缺点是很不直观,许多场合不能够使用。
2、计算的过程如下:首先会把a和 b的值都转成二进制的数据(这里转换的数据是 32的二进制哦),然后进行运算
3、我们知道,js中的数字默认是有符号的。有符号的32位二进制的最高位也就是第一位数字代表着正负,1代表负数,0代表整数。那到底11111111111111111111111111111110等于多少呢?最高位为1代表负数,负数的二进制转化为十进制:符号位不变,其他位取反加1。取反之后为10000000000000000000000000000001,加1之后为10000000000000000000000000000010,十进制为-2。
4、这里还有一个计算非运算的技巧:
5、取非运算的时候,先把数据前面加一个负号,然后在减1
6、//运用场景,想要实现一个权限控制
三、js中的位运算
在了解位运算之前,必须先了解一下什么是原码,反码和补码,以及二进制与十进制的转换.
一个数在计算机中是以二进制的形式存在的,其中第一位存放符号,正数为0,负数为1.原码就是用第一位存放符号的二进制数值.例如2的原码为00000010,-2的原码为10000010
正数的反码是它本身,负数的反码是在其原码的基础上,符号位不变,其余各位取反.
可见如果一个反码表示的是负数,并不能直观的看出它的数值,通常要将其转换成原码再计算
正数的补码是它本身,负数的补码是在其原码基础上,符号位不变,其余各位取反,最后+1.(即负数的补码为在其反码的基础上+1)
可见对于负数,补码的表示方式也是让人无法直观的看出其数值的,通常也需要转换成原码再计算.
正整数的十进制转二进制的方法为将一个十进制数除以2,得到的商再除以2,以此类推知道商为1或0时为止,倒序取得除得的余数,即为转换所得的二进制数.
负整数的十进制转二进制,先将该负整数对应的正整数转为二进制,然后对其取反再+1.即补码的形式
十进制小数转二进制的方法为"乘2取整",对十进制的小数部分乘2,得到的整数部分即是相应的二进制码数,然后继续对得到的小数部分乘2,如此不断重复,直到小数部分为0或达到精度要求为止.顺序取得每次的整数部分,即是该十进制小数的二进制表示.
将运算数以二进制表示,对应位都为1,则结果为1,否则为0.
奇数的二进制码的最后一位数肯定是1,而1只有最后一位为1,按位与运算后,结果肯定只有最后一位数是1.而偶数的二进制表示的最后一位数是0,和1进行按位与运算,结果的所有位都是0.
将运算数以二进制表示,对应位有一个为1,则结果为1,否则为0.
其实浮点数是不支持位运算的,所以会先把小数位丢弃,然后以整数进行位运算,而任何数与0进行按位或操作,结果都是它本身,就好像是对浮点数向下求整.
将运算数以二进制表示,对应位相同为0,相异为1.
异或满足交换律和结合律,数字与它本身进行异或操作,得到0;数字与0进行异或操作,得到它本身.
将操作数转换为二进制数,然后按位求反.
浮点数是不支持位运算的,所以会先直接去除小数部分,转成整数再进行位运算,就好像是对浮点数向下求整.
~~可以进行类型转换,位运算会默认将非数字类型转换成数字类型再进行运算(转换结果为整数直接去除小数部分)
移位运算符将操作数转换成二进制,然后向左或向右移动,超过的位丢弃,空出的位补0.
任何小数把它>> 0可以取整
其默认将非数字类型的转换为数字类型再做运算的性质与~~,| 0一样