We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
document: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
~ 操作符,叫做 按位非,它的用途就是将q其操作数当做32位的比特序列进行反转。
~
所有的按位操作符都会将操作数转成补码形式的有符号32位整数,就是将不足32位的二进制,用0填充至32位,其中最左位是符号位,决定数字是正数还是负数。而且只会处理整数,如果操作数为浮点数,将会舍弃小数部分。如数字 5 的二进制为
101
转成补码形式的32位整数是
00000000000000000000000000000101
那对其反转比特位(~5)后,就是
(~5)
11111111111111111111111111111010
负数的二进制就是对其正数的比特位取反,所以结果得到的数字就是-6
经上述例子可以得到一个公式:
~x = -(x + 1)
并且是取整数,接下来讨论一下该操作付的妙用
我们使用indexOf时,如果有匹配项则返回匹配的位置,无匹配项返回 -1,判断一个元素是否存在可这样写
arr.indexOf(5) === -1
将-1代入公式得
~-1 = -(-1 + 1) = 0 // ~-1 = 0
所以可简写为
~arr.indexOf(5)
因为按位操作符只操作整数部分,非整数部分会被舍弃,可用于取整操作
~~2.5333 // 2
用两个按位非操作符,就可以取整了,相当于 parseInt()
parseInt()
由于按位操作符只能操作32位的整数,所以他能操作的最大数为 (2^32 - 1),如果大于这个数字,那么公式 -(x + 1) 不再适用
-(x + 1)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
document: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
~
操作符,叫做 按位非,它的用途就是将q其操作数当做32位的比特序列进行反转。有符号 32 位整数
所有的按位操作符都会将操作数转成补码形式的有符号32位整数,就是将不足32位的二进制,用0填充至32位,其中最左位是符号位,决定数字是正数还是负数。而且只会处理整数,如果操作数为浮点数,将会舍弃小数部分。如数字 5 的二进制为
转成补码形式的32位整数是
那对其反转比特位
(~5)
后,就是负数的二进制就是对其正数的比特位取反,所以结果得到的数字就是-6
~ 按位非
经上述例子可以得到一个公式:
并且是取整数,接下来讨论一下该操作付的妙用
配合 indexOf
我们使用indexOf时,如果有匹配项则返回匹配的位置,无匹配项返回 -1,判断一个元素是否存在可这样写
将-1代入公式得
所以可简写为
取整
因为按位操作符只操作整数部分,非整数部分会被舍弃,可用于取整操作
用两个按位非操作符,就可以取整了,相当于
parseInt()
注意
由于按位操作符只能操作32位的整数,所以他能操作的最大数为 (2^32 - 1),如果大于这个数字,那么公式
-(x + 1)
不再适用The text was updated successfully, but these errors were encountered: