Bazı bitly operatörler üzerinde çalışıyorum ve bir sayının son 16 ikili basamağını ayıklamak ve onlarla bir işlem yapmak istiyorum. Ben temelde 0xFFFFFFFF gibi bir negatif int görmek ve daha sonra LSB FFFF
ayıklamak ve 0
ile bitiştirmek, böylece 0x0000FFFF
yerine öyle bir sıfır ile sonuçlandırmak istiyorum. Sadece küçük negatif sayıları önemsiyorum, bu yüzden LSB ihtiyacım olan tüm bilgiler olmalı.Bir negatif sayının son 16 ikili basamağını nasıl alabilir ve birleştirebilirsiniz?
İşte C benim yaklaşımdır:
#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;
}
Benim düşünce süreci yerine FFFFFFFF
ait FFFF
benziyor ben daha iyi bir zaman olacak bu yüzden benim int a
kısa dönüştürmek olabilir olmanın. Ne yazık ki benim için, bu
'in dökme (kısa) a' herhangi geniş çünkü gereksizdir değeri otomatik olarak –
@ LưuVĩnhPhúc teşekkürler. Bu bit manipülasyon söz konusu olduğunda kısa kullanmak için herhangi bir sebep var mı? –
Bazı durumlarda gerekli, ancak bu durumda değil –