题解 | #数字取整# 为什么两次取反会得到整数以及其解法

数字取整

https://www.nowcoder.com/practice/1e45f1d1e1674e79807f82743f8b8f0a

{"html":"<!DOCTYPE html>\n<html>\n\n<head>\n    <meta charset=\"UTF-8\">\n    <style>\n       /* 填写样式 */\n    </style>\n</head>\n\n<body>\n    <!-- 填写标签 -->\n    <script type=\"text/javascript\">\n        // 填写JavaScript\n        function _int(value) {\n            //1. 取反\n            //return ~~value\n\n            //2.Math.floor\n            return Math.floor(value)\n            //3.parseint\n\n}\n    </script>\n</body>\n\n</html>","css":"","js":""}

~~ 操作符的原理

  1. 按位取反操作符 ~:~ 操作符对一个数进行按位取反操作。按位取反会将每个二进制位的 0 变为 1,1 变为 0。例如,对于数字 5(二进制表示为 00000101),按位取反后的结果是 -6(二进制表示为 11111010)。
  2. 两次按位取反 ~~:第一次按位取反将数值转换为一个整数,并取反。第二次按位取反再将结果取反,恢复原来的整数部分。

为什么 ~~ 会保留整数?

  • 第一次按位取反:将数值转换为整数并取反。例如,5.7 经过第一次按位取反变为 -6。
  • 第二次按位取反:将结果再取反,恢复原来的整数部分。例如,-6 经过第二次按位取反变为 5。

其他整数转换方法

除了 ~~,JavaScript 还提供了其他几种将浮点数转换为整数的方法:

  1. Math.floor:向下取整。
  2. Math.ceil:向上取整。
  3. Math.round:四舍五入。
  4. Math.trunc:直接截断小数部分。
全部评论

相关推荐

牛客604067584号:我9月初投递10月入池,泡到现在。hr全部离职,当然没离职的时候也联系不上。我发邮件给campus也不回我
点赞 评论 收藏
分享
只写bug的程序媛:才15,我招行20多万,建设银行50多万,说放弃就放弃
点赞 评论 收藏
分享
02-15 09:23
已编辑
深圳技术大学 Java
德勤 后端 OC 实习140/天,转正税前7k
恶龙战士:不如码农烧烤
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务