3

System.Numerics.BigInteger 最近、型定義に奇妙な点があり、これには理由がないように見えます。この型はビットごとの演算子 ( F# では) をサポートしていません。NOT~~~F# の他の整数型では、.NET エコシステム全体でビット否定を実行できますが、bigint型には対応する~~~演算子がありません。

bigintが基礎となるハードウェアで直接サポートされていない合成型であるという事実は、他のビット単位の演算子<<<、つまり、、、、、および事前設定されたビット幅の欠如に対応するものをサポートすることを妨げるものではありません。では、なぜできないのでしょうか。>>>|||^^^&&&~~~

編集: Jeppe Stig Nielsenのおかげで、演算子が正確に実行されるSystem.Numerics.BigInteger型の私の見落としを指摘してくれました。それに応じて元の質問を修正しました。うっかり F# の演算子から省略されていたと思います。OnesComplementbitwise NOT~~~bigint

4

2 に答える 2

1

これが必ずしもその理由かどうかはわかりませんが、幅が固定されて~~~いないということは、それが通常行ういくつかの優れた特性を満たさないことを意味します。たとえば、どうあるべき~~~ 5Iですか?論理的には、これは0x1111...1010(1 の無限のプレフィックスを付けて) である必要があります。明らかに、このプレフィックスをどこかで削除する必要があります。結果を入力と同じビット幅に保つと、結果として得010 = 2られます。しかし、先頭のゼロは重要ではないため、同じロジック~~~ 2I1I. しかし、その後~~~ (~~~ 5I) <> 5I

于 2013-04-29T19:24:23.063 に答える