いくつかのビット演算子で作業しています。数字の最後の16進数を抽出し、演算を行いたいと思います。私は基本的には0xFFFFFFFFのような負のintを見て、LSB FFFF
を抽出し、0
と連結して、0になり、代わりに0x0000FFFF
のように見えます。 LSBが必要なすべての情報になるように、私はより小さい負の数だけを気にします。負数の最後の16進数を取得して連結するにはどうすればいいですか?
はここにCに私のアプローチです:
#include <stdio.h>
int main(){
int a = -1, c = 0;
short b = (short)a;
printf("a is %x\nb is %x",a,b);
c = (0 << 16) | b;
printf("\nc is %x\n", c);
return 0;
}
私の思考プロセスは、それが代わりにFFFFFFFF
のFFFF
ようになっていることを、私は良い時間を持っていますので、私は私のint a
shortに変換することができています。残念なことに私にとっては、これはちょうど変数のffffffff
を印刷します
キャスト '(ショート)A'には不要です値は自動的に切り捨てられます –
@LưuVĩnhPhúcありがとうございます。ビット操作に関しては、短くする理由はありますか? –
場合によっては必要ですが、この場合は –