2017-06-27 11 views
-1

編集可能なフィールドを持つ優れたインターフェイスを作成したいと考えています。これら のフィールドは、たとえば、これらのフィールドのビットで構成されている番号になります編集:javascript:大きな16進数を操作する

field1: bits 0-6, value 0x0F 
field2: bits 7-13, value 0x0F 
result: 0x078F 

これは私が100から150ビットの結果にその金額フィールドを扱っていなかった場合は行うことは比較的容易です:

field1: bits 0-6, value 0x0F 
field2: bits 7-13, value 0x0F 
field3: bits 14-34, value 0x0F 
field4: bits 35-65, value 0x0F 
field5: bits 66-96, value 0x0F 
... 
... 

何らかの種類の整数変数を使用することができません。私はどうにかして長いビットストリングとして数字を格納しなければならないが、シットルはそれらのビットごとの計算を提供する。私はこれを達成するためのアプローチについて聞きたいと思います。

+0

ビット単位の演算または算術演算のみを指定しますか? –

+0

私はこの作業がビット単位の操作しか必要としないと考えています – susdu

答えて

0

ビット単位の操作のみが必要なので、フィールドは前述のとおりに格納できます。

各数字(150ビット)をnフィールドに分解した場合、それぞれの数字にfield1 - fieldnを保存することができます。

ここで2つの数字があり、3番目の数字を得るためにビット単位の操作を行いたいとします。さて、ビット単位の演算はビットレベルで動作します(つまり、1ビットの計算は他のビットに影響しません)。したがって、フィールドを個別に処理することができます。あなたは、単に

field1_c = field1_a^field1_b 
field2_c = field2_a^field2_b 

などなどのnまでを行うことができます^

-

今操作はビット単位のXORであると言います。

これは任意のビット演算に適用できます。

算術演算の場合、フィールド間を移動する必要がありますが、

追加はかなり簡単です。 (あなたは紙の上でそれをどうやって行うのか、キャリーがどのように進むのかを考えてください)。

+0

最終結果にはフィールドがなく、すべてのビットが1つのビッグビットシーケンスに結合されています。これは、それを作るフィールドのすべてのビットの値を変更するので、演算は互いに独立していません。 – susdu

+0

"これは、フィールドを作成するフィールドのすべてのビットの値を変更します。巨大なシーケンスが少し変わるでしょう。あなたが必要とするものを示す簡単な例を提供する方が良いでしょう。あなたの質問は本当に不明です。 –

+0

フィールド1が値0x8のビット0-6で、フィールド2が値0x1のビット8-9である場合、最終結果は0x1f、0x8fです。フィールド上の操作は独立していません。 – susdu

関連する問題