私は64ビットのメモリ値を持っています。最初の16ビットはオフセットです.16ビットを他の48ビットに追加する最も効率的な方法は何ですか. 明らかなロジックは
ab = *ptr >> 48
result = *ptr & 0x0000 ffff ffff ffff + ab;
また、20/44ビットだったらどうなるでしょう。
SIMD / Asm の回答は良好です。
最後にオフセットを保存することもできます。参考までに、主な値はオブジェクトのアドレスになり、オフセットはオブジェクトへのオフセットになります。先頭にビットがあると、コレクターはレジスターを使用してそれをマスクできますが、ミューテーターの最適化が向上します。