私はテッサラル算術を使っていくつかの作業をしています。単語の特定の領域でキャリーを検出する必要があります。プログラムの性質上、ビットの位置は入力に依存します。たとえば、32ビットのワードサイズで、6ビットの入力では、加算キャリーのビット19と3、減算のビット31と15をチェックすることに興味があります(より一般的には、興味深いビットは(ワードサイズ - 1)、(ワードサイズ/ 2 +入力ビット/ 2)、(ワードサイズ/ 2-1)および(入力ビット/ 2))。カスタムオーバーフロー検出
(after addition) ((NumberToCheck & (1 << 19 + 1 << 3)) != 0) --> carried bit(s)
(or after subtraction) ((NumberToCheck & (1 << 31 + 1 << 15)) != 0) --> carried bit(s)
はこれにより良いアプローチがあります:
の線に沿って何か私は何を考えているのですか?
私はこのアプローチが私の必要とすることをするかどうかはわかりません。私がtesseral算術を使って作業しているとき、私は最初に私が取り組んでいる言葉のビットを解き放つものです。次に、私は一度に2つの場所での貨物をチェックする必要があります。 1つはx座標用、もう1つはy座標用です。上記の例では、00000xxx00000xxxb(各xは意味のある値であり、それぞれ0はない)のようなものを持っているので、最大数を割り当てることは左のサブワードを助けるだけです。 – bendicott
助けがあれば、私は正の空間だけにも興味があるので、aとbは常に正の値になります。各サブワードは1つだけインクリメントまたはデクリメントされます。これにより、さらに単純化されます。キャリーが発生した場合、どこでキャリーが発生するかがわかります。私は主にスピードに興味があります。これらの特定のビットへの変更を確認する良い方法はありますか? (ダブルポストに申し訳ありませんが、1つのコメントには収まりません) – bendicott