Ich arbeite mit einigen bitweisen Operatoren und ich möchte die letzten 16 Binärziffern einer Zahl extrahieren und eine Operation mit ihnen ausführen. Ich möchte im Grunde eine negative int wie 0xFFFFFFFF sehen und dann extrahieren Sie das LSB FFFF
und verketten sie mit 0
, so dass ich mit einer Null enden, so dass es wie 0x0000FFFF
aussieht. Ich sorge mich nur um kleinere negative Zahlen, also sollte das LSB alle Informationen sein, die ich brauche.Wie bekomme ich die letzten 16 Binärziffern einer negativen Zahl und verkette sie?
Hier ist mein Ansatz in 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;
}
Mein Denkprozess ist, dass ich meine int a
auf eine kurze umwandeln kann, so dass es wie FFFF
statt FFFFFFFF
aussieht werde ich eine bessere Zeit. Leider druckt das für mich nur ffffffff
für die Variablen
die Besetzung in '(kurz) a' ist nicht erforderlich, da jede breiter Wert wird automatisch abgeschnitten –
@ LưuVĩnhPhúc danke. Gibt es einen Grund, bei der Bit-Manipulation zu kurz zu greifen? –
es wird in einigen Fällen benötigt, aber nicht in diesem Fall –