关于javascript中的~
高洛峰
高洛峰 2017-04-11 12:20:36
[JavaScript讨论组]

《javascript权威指南》里是这么说的:
位运算符"~"是一元运算符,位于一个整型参数之前,它将操作数的所有位取反。根据javascript中所带符号的整数的表示方法,对一个值使用"~",运算符相当于改变它的符号并减1。例如~0x0F = 0xFFFFFFF0或-16。

这是两个~符号:

~~5===5;      //true
~~4.5===4.5   //false
~~-5===-5     //true

是不是可以推断出~~n===n,n为未知数字


当为一个~符号:

~5===-6;      //true
~4.5===-4.5   //false
~4.5===-3     //true
~-5===-5      //false
~-5===4       //true
~-4.5===3       //true

是不是可以推断出~n===-parseInt(n)-1,n为未知数字

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
天蓬老师

~ 是按位非,在 JS 中常常连用,以简化 parseInt,就像这样 ~~something

~ 在运算的时候会把操作数转换为整型来运算,所以 ~4.5 实际是 ~4

PHP中文网

其实并不需要推断……
你自己都写明了:位运算符"~"是一元运算符,位于一个整型参数之前

js的所有数字其实都是按照64位浮点数储存的,当需要进行位运算时,会将其临时转换为整数,所以你会认为是parseInt(n)

另,根据有符号整数负数补码的定义可知,-x==~x+1

就是这样~

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号