Gast
#1343545
Moin, ich bin hier grade auf etwas gestoßen, dass mir komisch und überflüssig erscheint. Es geht um folgenden Codeausschnitt:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Dieser Code ist aus einem Programm für einen PIC18F2520 und es wurde ein HITECH PICC18 Compiler benutzt. Ich soll nun erstmal das Programm für neue Hardware mit einem AVR portieren. currentDara ist ein char (nicht unsigned) und wird von einer 8 Bit Software SPI geselen, welche einen unsigned char zurück gibt. Das Array data wird iteriert (i Laufindex). Ich hoffe ich nehme richtig an, dass ein short genau wie ein int 16 Bit beträgt. In den Felder data[1] und data[2] wird eine Summe gebildet. Da currentData auch negativ sein kann (Zweierkomplement) wird hier per if-else geprüft ob es positiv oder negativ ist. Im positiven Fall wird einfach addiert. Im negativen Fall wird erstmal der Wert 256 abgezogen und dann addiert. Warum wird 256 abgezogen? Normal sollte eine Addition doch ausreichen und das if-else ist überflüssig. Übersehe ich den Grund für diesen Umweg über das if-else und die Subtraktion oder ist dieses gebilde wirklich überflüssig und kann durch data[i] += currentData ersetzt werden?