erlang 非零整数的'bnot'结果是否总是翻转符号?

tquggr8v  于 2022-12-08  发布在  Erlang
关注(0)|答案(2)|浏览(140)

非零整数bnot的结果是否总是翻转符号?
更准确地说:

  1. bnot NonNeg是否总是负数?
  2. bnot Neg是否总是非负数?
bzzcjhmw

bzzcjhmw1#

看起来像是的,除了-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>
4dbbbstv

4dbbbstv2#

简而言之--是的。
原因是Erlang使用U2来编码负整数,这意味着bnot X本质上等价于-X - 1

相关问题