Hi. 
Da ich direkt mit Objective-C gestartet habe, und kein "Quereinsteiger" bin,
hab ich etwas Probleme mit dem Verständnis hier.
Es ist aus einem Ausschnitt aus einem Beispiel einer RS232 Übertragung.
Ich denke es soll den zu übertragenen Wert in 4er Bit-Gruppen aufteilen um die Reihenfolge der Übertragung so zu sortieren, wie es das Empfangsgerät gern hätte (highByte/lowByte/blablabla ;)).
Variablen sind alle ints.
Ich spiel das mal durch wie es für mich aussieht:
Benennen wir mal die 16 Bits der Variable "Value" von 0-F(Hex).
F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Zeile 1 belegt highByte mit
"0|"0"|"0"|"0"|F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4
Zeile 2 belegt lowByte mit
B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |"0"|"0"|"0"|"0"
&
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"1"|"1"|"1"|"1"|"1"|"1"|"1"|"1"
=
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| 3 | 2 | 1 | 0 |"0"|"0"|"0"|"0"
Zeile 3 ist leer.
Zeile 4 belegt highByte0 mit
"0|"0"|"0"|"0"|"0|"0"|"0"|"0"|F | E | D | C | B | A | 9 | 8
Zeile 5 belegt highByte1 mit
"0|"0"|"0"|"0"|F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4
&
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"1"|"1"|"1"|"1"
=
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| 7 | 6 | 5 | 4
Zeile 6 belegt lowByte0 mit
"0"|"0"|"0"|"0"| B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Zeile 7 belegt lowByte1 mit
B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |"0"|"0"|"0"|"0"
&
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"1"|"1"|"1"|"1"
=
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"
Und spätestens nach der letzten Zeile wusste ich es stimmt etwas nicht.
Erwartet hätte ich, dass in jedem der 4 letzten Variablen 1/4 des Originalwerts zu finden ist.
Also etwa so:
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0" | 3 | 2 | 1 | 0,
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| 7 | 6 | 5 | 4,
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| B | A |9 | 8,
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| F | E | D | C
Ich schätze mal es liegt an meinem mangelnden Wissen und nicht an dem Code.
Kann mich jemand erleuchten?

Da ich direkt mit Objective-C gestartet habe, und kein "Quereinsteiger" bin,
hab ich etwas Probleme mit dem Verständnis hier.
Es ist aus einem Ausschnitt aus einem Beispiel einer RS232 Übertragung.
Ich denke es soll den zu übertragenen Wert in 4er Bit-Gruppen aufteilen um die Reihenfolge der Übertragung so zu sortieren, wie es das Empfangsgerät gern hätte (highByte/lowByte/blablabla ;)).
Variablen sind alle ints.
highByte = (Value >> 4);
lowByte = (Value * 16) & 0xff;
highByte0 = (highByte >> 4);
highByte1 = (highByte & 0x0f);
lowByte0 = (lowByte >> 4);
lowByte1 = (lowByte & 0x0f);
Ich spiel das mal durch wie es für mich aussieht:
Benennen wir mal die 16 Bits der Variable "Value" von 0-F(Hex).
F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Zeile 1 belegt highByte mit
"0|"0"|"0"|"0"|F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4
Zeile 2 belegt lowByte mit
B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |"0"|"0"|"0"|"0"
&
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"1"|"1"|"1"|"1"|"1"|"1"|"1"|"1"
=
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| 3 | 2 | 1 | 0 |"0"|"0"|"0"|"0"
Zeile 3 ist leer.

Zeile 4 belegt highByte0 mit
"0|"0"|"0"|"0"|"0|"0"|"0"|"0"|F | E | D | C | B | A | 9 | 8
Zeile 5 belegt highByte1 mit
"0|"0"|"0"|"0"|F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4
&
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"1"|"1"|"1"|"1"
=
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| 7 | 6 | 5 | 4
Zeile 6 belegt lowByte0 mit
"0"|"0"|"0"|"0"| B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Zeile 7 belegt lowByte1 mit
B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |"0"|"0"|"0"|"0"
&
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"1"|"1"|"1"|"1"
=
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"
Und spätestens nach der letzten Zeile wusste ich es stimmt etwas nicht.

Erwartet hätte ich, dass in jedem der 4 letzten Variablen 1/4 des Originalwerts zu finden ist.
Also etwa so:
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0" | 3 | 2 | 1 | 0,
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| 7 | 6 | 5 | 4,
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| B | A |9 | 8,
"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"|"0"| F | E | D | C
Ich schätze mal es liegt an meinem mangelnden Wissen und nicht an dem Code.
Kann mich jemand erleuchten?