![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#11 |
Elite
![]() |
![]() genauso im prinzip
register a = (0xFF00 & 16bit register) >> 8; register b = 0xFF & 16bit register;
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#12 | |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() Zitat:
register a = 16bit register >> 8; Da nicht rotiert wird - sondern geshiftet - fällt alles von den unteren 8 Bits weg und die oberen 8 Bits werden durch das Verschieben um 8 Stellen nach rechts zu den unteren 8 Bits, tja so einfach geht es. mfg Kikakater |
|
![]() |
![]() |
![]() |
#13 | |
Hero
![]() |
![]() @kikakater:
Zitat:
Um auf Nummer sicher zu gehen und sich nicht um signed/unsigned kümmern zu müssen: register a = (16bit register >> 8 ) & 0xFF;
____________________________________
Bibel |
|
![]() |
![]() |
![]() |
#14 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() Du widersprichst Dir selbst. Ein Register ist standardmäßig unsigned.
int Variablen sind je nach Compilerimplemenation short (16bit) bzw. long (32bit). Außderdem nehmen die meisten Compiler einen int (Datentyp) als signed int an. Wenn ich nun einen hohen 16bit Wert (Highbyte), der negativ ist, um 8 Bits nach rechts shifte, ist die einzige richtige Lösung, die Variable mit (unsigned int) umzutypisieren/=zu casten. |
![]() |
![]() |
![]() |
#15 | |
Hero
![]() |
![]() Zitat:
Signed oder Unsigned ist reine Interpretationssache, der Inhalt der Speicherstelle schaut immer gleich aus. Ein Int ist immer so breit wie ein Register des Prozessors auf den compiliert wird, mindestens aber 16Bit. Auf einem 8Bitter also 16Bit, auf einem 16Bitter 16Bit, auf einem 32Bitter 32Bit und auf einem 64Bitter 64Bit. Das macht die Ints ja so "interessant"... <OT> Was machst du aber wenns wie bei Java keine unsigned-type gibt? </OT> mfG Clystron
____________________________________
God, Root, what is difference? |
|
![]() |
![]() |
![]() |
#16 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() Halleluja rufen, denn unsigend ints sind eine Geschmackverirrung in Zeiten von 64bit.
unsigned ints sind grundsätzlich abzulehnen ... Bei verschiedenen engen Nummernkreisen machen sie einen Sinn, sonst sind sie jedoch eine Quelle für viele Programmfehler. |
![]() |
![]() |
![]() |
#17 | |
Hero
![]() |
![]() Zitat:
____________________________________
Bibel |
|
![]() |
![]() |
![]() |
#18 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() Deswegen habe ich auch gemeint, daß man vor dem Verschieben einen Cast durchführen muß um portabel zu sein, respektive damit der Code portabel ist.
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|