Javascript中的破浪号~,其实就是位操作符取反操作

JavaScript中的取反位运算符:~

js中的数字默认是有符号的。有符号的32位二进制的最高位也就是第一位数字代表着正负,1代表负数,0代表整数
为什么要用 补码?,计算机内部就是以 补码存储。


(负数的补码规则:符号位不变,其他位取反加1;正数的补码规则:就是其本省)

~-1返回0:
原码:1...0000...0001
补码:1...1111...1110   +  1 = 1...1111...1111
取反:0...0000...0000
补充:为0开头无需处理为补码
十进制:0
~1返回-2:
原码:0...0000...0001
补码:0...0000...0001
取反:1...1111...1110
补充:为1开头,需要处理为补码:1...0000...0010
十进制:-2
~2返回-3
原码:0...0000...0010
补码:0...0000...0010
取反:1...1111...1101
补充:为1开头,需要处理为补码:1...0000...0011
十进制:-2
~3返回-4
原码:0...0000...0011
补码:0...0000...0011
取反:1...1111...1100
补充:为1开头,需要处理为补码:1...0000...0100
十进制:-4
~0返回-1
原码:0...0000...0000
补码:0...0000...0000
取反:1...1111...1111
补充:为1开头,需要处理为补码:1...0000...0001
十进制:-1
~9返回-10
原码:0...0000...0101
补码:0...0000...0101
取反:1...1111...1010
补充:为1开头,需要处理为补码:1...0000...0110
十进制:-10




规律:
取反操作可以用以下公式来表达,如n的取反后的值为:

~n = n*(-1)-1 = -(n+1)



取反操作在javascript框架中的用途:

var index = -1;

if(~index){};//此时,if内部的返回值为0,表示if不成立,经常用以判断变量值是否等于-1的场景


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值