最近我在虽然 F# 中的其他整数类型允许System.Numerics.BigInteger
类型定义中发现了一个奇怪的地方,似乎缺乏理由——这种类型不支持按位运算NOT
符(~~~
在 F# 中)。在 .NET 生态系统中执行位否定和整体操作,但bigint
类型缺少对应的~~~
运算符。
bigint
底层硬件不直接支持的合成类型这一事实并不妨碍它支持其他位运算符,即<<<
, >>>
, |||
, ^^^
, 和&&&
适应缺少预设位宽的情况。那为什么~~~
不能呢?
编辑:感谢Jeppe Stig Nielsen指出我对让操作员准确执行的System.Numerics.BigInteger
类型的疏忽。我已相应地更正了原始问题。这让我相信F# 中的运算符无意中忽略了这一点。OnesComplement
bitwise NOT
~~~
bigint