中央の両側の 2 ビットを保持しながら、特定の 8 ビット数値の中央の 4 つの値を交換する方法について考えるのに苦労しています。これが図です:
8 ビットの数値 |76543210| を指定して、2 を 4 に、3 を 5 に交換します。ただし、数字の 7、6、1、および 0 も保持する必要があります。
これは私が現在行っていることの疑似コードです (これは、実際に必要なものよりもはるかに複雑かもしれません。ビット単位の操作は初めてです)
mask1 = 00001100
mask2 = 00110000
temp1 = (original number) AND mask1 // Extract only the bits we care about swapping.
temp2 = (original number) AND mask2
temp1 << 2 // Perform the swap of the inner four bits.
temp2 >> 2
swapped = temp1 OR temp2 // The final swapped number, but the outer digits
// haven't been preserved.
シフトが発生した後に外側の数字が確実に復元されるようにするために使用するマスクまたは何かがありますか?
今、私は真ん中の 4 桁をゼロにしてから (元の数字) または交換することを考えていますが、それはハッキーのようです。
これについて助けてくれてありがとう!