Wie wird ein Hex-Wert bitweise manipuliert?
Ich habe ein sehr grundlegendes Verständnis von bitweisen Operatoren. Ich bin an einem Verlust zu verstehen, wie der Wert zugewiesen wird, jedoch. Wenn jemand kann mich in die richtige Richtung wäre ich sehr dankbar.
Mein Hex-Adresse: 0xE0074000
Den Dezimal Wert: 3758571520
Den Binären Wert: 11100000000001110100000000000000
Ich versuche, das Programm ein einfaches Micro-Controller und verwenden Sie das Register Zugriff-Klasse in Microsoft .Net Micro Framework, um den Controller machen, was ich will, es zu tun.
Register T2IR = new Register(0xE0074000);
T2IR.Write(1 << 22);
In meinem Beispiel oben, wie die bits in der Binären Darstellung verschoben? Ich verstehe nicht, wie die Verwaltung von bits zugeordnet ist, die Adresse in Binärer form.
Wenn jemand kann mich in die richtige Richtung wäre ich sehr greatfull.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vergessen Dezimalzahlen für einen start. Erhalten Sie später darauf zurück.
Zuerst müssen Sie, um zu sehen, die Logik, die zwischen HEX und BINÄR.
Okay, für ein byte, du hast 8 bits (#7-0)
Wenn Sie Lesen, dass im Binärsystem, ein byte an, wie dieses, %00001000
Dann ist das bit gesetzt, ist der 4. von rechts aka bit #3, die einen Wert von 08 hex (in der Tat auch dezimal, aber immer noch vergessen, dezimal, während Sie herausfinden, hex/Binär)
Nun, wenn wir die binäre Zahl %10000000
Dies ist die #7 bit ist. Das ist ein hex Wert 0x80
So alle Sie tun müssen, ist die Summe, die Sie in "nibbles" (jeder Teil des hex-byte genannt wird, ein knabbern von einigen geeks)
die maximale können Sie in einem nibble ist (dezimal) 15 oder F als 0x10 + 0x20 + 0x40 + 0x80 = 0xF0 = binary %11110000
also alle Lichter auf (4 bits) in einem nibble = F in hex (15 dezimal)
gleiche gilt für das untere nibble.
Sehen Sie das Muster?
num | 0x1000000; num & 0xFEFFFFFF;
natürlich, das ist vorausgesetzt, bit 8 ist 1. Sie haben zu tun, einige Detektion mit einem anderen bitweisen UND -, um herauszufinden, ob das bit ist 1 oder 0. Warum wollen Sie zur Verschiebung eines einzelnen bit?Siehe @BerggreenDK Antwort für das, was eine Verschiebung ist. Hier einige info darüber, wie es ist in hex (das gleiche, nur andere Darstellung):
Verschiebung ist ein sehr einfaches Konzept zu verstehen. Das register ist eine Feste Größe, und was auch immer bits, die passt nicht, fällt das Ende. Also, nehmen Sie dieses Beispiel:
int num = 0xffff << 16;
Ihre Variablen in hex wäre jetzt
0xffff0000
. Beachten Sie, wie der am rechten Ende mit Nullen gefüllt. Nun, lassen Sie shift wieder.num
ist jetzt0x00ff0000
. Sie nicht bekommen, Ihre alte bits zurück. Das gleiche gilt für die richtigen Veränderungen als gut.Trick: Links Verschiebung um 1 ist wie die Multiplikation der Zahl mit 2 und rechts Verschiebung um 1 ist, wie integer dividieren alles durch 2.