Ich mache und Hausaufgaben in MARS Simulator (Assembly) und ich habe an einem Teil fest. Wir hassen in eine Registrierung ein 32-Bit-Wort zu laden. Die Bits von 0 bis 7 repräsentieren die blaue Farbe, die Bits 8 bis 15 die grüne Farbe und die Bits 16 bis 23 die rote Farbe. Die verbleibenden Bits werden auf Null gesetzt. Zum Beispiel ist die gelbe Farbe 0x00ffff00.Bit Arithmetik - verketten zwei Ergebnisse in einem Bit
Die Hausaufgaben sind in Baumaufgaben aufgeteilt und ich bin auf der letzten. Wir haben eine 64 mal 64 Pixel-Anzeige (jedes Pixel ist 4 * 4, also Gesamtbreite und -höhe sind 256). Die rote Farbe ist immer auf 0 gesetzt, grün ist 4 * die Nummer der Zeile und blau ist 4 * die Nummer der Spalte. Stellen Sie sich vor, wir sind in der Zeile 2 und 3, grüner Wert wäre 2 * 4 und blauer Wert 3 * 4. Also, in diesem Beispiel, in hex, wäre 12 0xc und 8 0x08 und die Nummer, die in die Registrierung geladen werden sollte, wäre 0x00000c08.
Also mein erster Zweifel ist, wie kann ich Bit Algebra verwenden, um das Ergebnis der 2 Multiplikationen zu verketten?
Und mein zweiter Zweifel ist das. Stellen Sie sich vor, wir sind das letzte Pixel, das wir 64 * 4 und 64 * 4 haben müssen. Das Ergebnis ist 256 und wir können nicht nur 8 Bits zur Darstellung dieser Zahl verwenden, also sollte ich wahrscheinlich nicht die Pixel 1 bis 64, sondern 0 bis 63 verwenden. Recht?
Verwenden Binärverschiebungen oder 2 multiplizieren^n. Welcher Prozessor übrigens? – BlackBear
denke 0-63 nicht 1-64. 63 = 0x3F 63 * 4 = 0x3F << 2 = 0xFC das passt innerhalb von 8 Bit kein Problem. –
Windows mit x64-Prozessor. Was wäre das angegebene Beispiel? Tut mir leid, aber ich verstehe nicht. – Favolas