そのため、このアイデアを実装するのに苦労しています。基本的に、引数「uf」を取り、それを否定したいだけです。私は引数を 32 ビットの符号なし整数として扱っています。これは、単精度浮動小数点数がどのように見えるかということと、一種の等価物として機能します。同じように動作するはずです: 符号付きビット、指数の 8 ビット、小数の 23 ビット。
ただし、引数が NaN の場合は、引数を返すだけで済みます。理想的には、キャストや高レベルの操作なしでこれを実装できるようにしたいと考えています。どうやら、ビット単位の演算と整数/符号なし演算 (if、while、||、&&) だけで実行できるはずです。
どこから始めればよいかわかりませんか?「uf」の各部分を抽出し、それらをすべて個別に (ビットごとの演算子を使用して) 否定し、最後にそれらをすべて追加するだけでよいでしょうか? 否定には (~uf) + 1 を使用する可能性があります。
NaN の場合、8 ビット部分 (exp) のすべての 1 と小数部分の 0 以外をチェックする必要があることを認識しています (それ以外の場合は無限大と見なされます)。
繰り返しますが、これは 32 ビット システムの C で行われます。