Ich habe den folgenden Code:~ bitweise Operator in JavaScript
var a = parseInt('010001',2);
console.log(a.toString(2));
// 10001
var b = ~a;
console.log(b.toString(2));
// -10010
~ Führt den NOT-Operator für jedes Bit. NOT a ergibt den invertierten Wert (a.k.a. ein Komplement) von a.
sollte daher zurücks .
So verstehe ich nicht, wie wir -10.010 statt bekommen? Die einzige mögliche Erklärung ist, dass:
010001 101110 negiert wird, aber er diese -10.001 schreiben und dann für einen obskuren Grund, warum er mir die beiden Ergänzungen und -10.001 -10.010 werden.
Aber all dies ist sehr dunkel in meinem Kopf, hätten Sie eine Vorstellung davon, was genau passiert.
Es sieht aus wie Javascript dies ein 32-Bit unterzeichnet hält ich nt unter den Deckeln. 0b010001 = 0x00000011, oder Dezimal 17. Das Einerkomplement von diesem ist 0xFFFFFFEE, oder dezimal -18, wenn es als vorzeichenbehafteter 32-Bit-Int behandelt wird, der 0x11111111111111111111111111,11101110 entspricht. –
Auch 0b10010 ist positiv 18, also -0b10010 ist -18. –