2017-10-21 114 views
0

J'ai un problème en essayant de xor 32bits de 1 (0xffff ffff). Ex: 0xffffffff^0xfff devrait être 0xfffff000 mais dans js je ne peux pas déclarer un entier non signé ainsi je reçois -4096 ou -1000 en hexadécimal.Javascript xor 32bit nombre entier

Voici la sortie de la console js:

>0xffffffff^0xfff 
<-4096 

>(0xffffffff^0xfff).toString(16) 
<"-1000" 

>0xffffffff.toString(2) 
<"11111111111111111111111111111111" 

>0xfff.toString(2) 
<"111111111111" 

Il formate correctement jusqu'à ce que je fais quelque chose avec elle. Existe-t-il un moyen de traiter ce cas correctement?

UPD: J'ai réalisé ce problème est à la tête peu, mais ne pas comment y faire face décalage droit non signé

Répondre

0

est utile pour ce cas

>((0xf0000000^0xf)>>>0).toString(16) 
<"f000000f"