非零整数的“bnot”结果是否总是翻转符号?
Does the result of `bnot` for nonzero integers always flip the sign?
对于非零整数,bnot
的结果是否总是翻转符号?
更准确地说:
bnot NonNeg
NonNeg >= 0
总是负数吗?
bnot Neg
Neg =< 0
总是非负数吗?
似乎是,除了 -0。此外,它的行为应该像在 C 中一样。
Eshell V11.1.7 (abort with ^G)
1> bnot 1.
-2
2> bnot -1.
0
3> bnot 55.
-56
4> bnot -55.
54
5> bnot 23456789543213456787654323456789765432.
-23456789543213456787654323456789765433
6> bnot -23456789543213456787654323456789765432.
23456789543213456787654323456789765431
7> bnot 0.
-1
8> bnot -0.
-1
9>
简而言之 - 是的。
原因是 Erlang 使用 U2 编码负整数,这意味着 bnot X
本质上等同于 -X - 1
。
对于非零整数,bnot
的结果是否总是翻转符号?
更准确地说:
bnot NonNeg
NonNeg >= 0
总是负数吗?bnot Neg
Neg =< 0
总是非负数吗?
似乎是,除了 -0。此外,它的行为应该像在 C 中一样。
Eshell V11.1.7 (abort with ^G)
1> bnot 1.
-2
2> bnot -1.
0
3> bnot 55.
-56
4> bnot -55.
54
5> bnot 23456789543213456787654323456789765432.
-23456789543213456787654323456789765433
6> bnot -23456789543213456787654323456789765432.
23456789543213456787654323456789765431
7> bnot 0.
-1
8> bnot -0.
-1
9>
简而言之 - 是的。
原因是 Erlang 使用 U2 编码负整数,这意味着 bnot X
本质上等同于 -X - 1
。