当前位置: 首页 > 面试题库 >

Java中~~(“双波浪号”)有什么作用?

贺佑运
2023-03-14
问题内容

我今天正在检查一个在线游戏物理库,遇到了 运算符。我知道单个〜是按位NOT,这会使 变成NOT的NOT,这会返回相同的值,不是吗?


问题答案:

它删除小数点后的所有内容,因为按位运算符会将其操作数隐式转换为带符号的32位整数。无论html" target="_blank">操作数是(浮点)数字还是字符串,这都有效,并且结果是数字。

换句话说,它产生:

function(x) {
  if(x < 0) return Math.ceil(x);
  else return Math.floor(x);
}

仅当 x 在-(2 31)和2 31-1之间。否则,将发生溢出,并且数字将“环绕”。

将函数的字符串参数转换为数字可能被认为是有用的,但由于存在溢出的可能性,并且不适合与非整数一起使用,因此我不以这种方式使用它,除了“ code golf”(
无意义地从程序源代码中修剪字节,以牺牲可读性和鲁棒性为代价)。我会用+x还是Number(x)代替。

这是NOT的NOT

数字-43.2例如:

-43.2 10 = 11111111111111111111111111010101 2

作为带符号的(二进制补码)32位二进制数。(JavaScript忽略小数点后的含义。)将这些位取反可以得到:

非-43 10 = 00000000000000000000000000101010 2 = 42 10

再次反转得到:

不是42 10 = 11111111111111111111111111010101 2 = -43 10

这与Math.floor(-43.2)负数四舍五入而不是四舍五入不同。(等于-44的下限函数总是舍入到下一个较小的整数,而不管该数字是正数还是负数。)



 类似资料:
  • 问题内容: 我在一些代码中看到了这一点,但我不知道它的作用: 什么是运营商做? 问题答案: 那是一个双重的非按位运算符。用作的更快替代品

  • 本文向大家介绍R中波浪号(〜)的用途是什么?,包括了R中波浪号(〜)的用途是什么?的使用技巧和注意事项,需要的朋友参考一下 Tilde运算符用于定义统计模型公式中因变量和自变量之间的关系。代字号运算符左侧的变量是因变量,代字号运算符右侧的变量被称为自变量。因此,代字号运算符有助于定义因变量取决于代字号运算符右侧的自变量。 示例 此处,y是因变量,x1,x2和x3是自变量。

  • 问题内容: 搜索角色并不容易。我查看了一些CSS,发现了这个 这是什么意思? 问题答案: 该选择器实际上是[通用同级组合器(在选择器级别4中重命名为后续同级组合[器): 通用同级组合器由分隔两个简单选择器序列的“波浪号”(U+007E,〜)字符组成。这两个序列所表示的元素在文档树中共享相同的父对象,而第一个序列所表示的元素在第二个所表示的元素之前(不一定紧接)。 考虑以下示例: 与第4个和第5个列

  • 问题内容: 我正在阅读一些JMockit示例并找到以下代码: 通用标识符中的代字号是什么意思?我知道这是一元按位NOT运算符,但在这里看不到操作数。 另外,我尝试编译它并出现错误。我只是想念什么吗? 问题答案: 它只是“与声明中相同”的简写。 一些IDE(例如IntelliJ)也使用此功能。 磁盘上的文件没有此标记,这只是IDE GUI中的压缩。

  • 搜索字符并不容易。我在看CSS的时候发现了这个 这是什么意思?

  • 问题内容: var attr = ~’input,textarea’.indexOf( target.tagName.toLowerCase() ) ? ‘value’ : ‘innerHTML’ 我在一个答案中看到了它,而我从未见过。 这是什么意思? 问题答案: 是按位运算符,用于翻转其操作数中的所有位。 例如,如果您的数字为,则其对IEEE754浮点数JavaScript如何处理数字的二进制表