相关疑难解决方法(0)

为什么〜-1等于0且〜1等于-2?

根据ECMAScript 5.1标准的第11.4.8小节:

生产UnaryExpression:~ UnaryExpression的计算方法如下:

  1. 让我们expr来评估UnaryExpression.
  2. 我们oldValueToInt32(GetValue(expr)).
  3. 返回应用按位补码的结果oldValue.结果是带符号的32位整数.

所述~操作者将调用内部方法ToInt32.在我的理解中ToInt32(1),ToInt32(-1)将返回相同的值1,但为什么~-1等于0且~1等于-2?

现在我的问题是为什么ToInt32(-1)等于-1?ECMAScript 5.1标准的第9.5小节:

抽象操作ToInt32将其参数转换为-2 31到2 31 -1 范围内的2 32个整数值之一.这个抽象操作的功能如下:

  1. 设number是在输入参数上调用ToNumber的结果.
  2. 如果number为NaN,+ 0,-0,+∞或-∞,则返回+0.
  3. 让posInt为sign(number)*floor(abs(number)).
  4. 设int32bit为posInt modulo 2 32 ; 也就是说,具有正号并且幅度小于2 32的数字类型的有限整数值k 使得posInt和k的数学差异在数学上是2 32的整数倍.
  5. 如果int32bit大于或等于2 31,则返回int32bit - 2 32,否则返回int32bit.

当参数为-1时,根据9.5,在步骤1中数字仍为-1,跳过步骤3中的步骤2 posInt将在步骤4中为-1,int32bit将在步骤5中为1,它将返回1

哪一步错了?

javascript operators bitwise-operators ecmascript-5

5
推荐指数
1
解决办法
229
查看次数

这段代码中百分比字符的含义是什么?

在这种情况下,百分比是指什么?

int myInt = 27 % 10;  
myInt = 7;  
Run Code Online (Sandbox Code Playgroud)

%这段代码的意思是什么?

c int

0
推荐指数
1
解决办法
2006
查看次数

标签 统计

bitwise-operators ×1

c ×1

ecmascript-5 ×1

int ×1

javascript ×1

operators ×1