Hier ist ein sehr schneller Weg, um diese Operation zu tun:
a = b * 0.99609375;
Es ist ähnlich zu dem, was Sie wollen, aber es ist viel schneller.
a = b;
a -= b>>8;
Oder noch schneller einen Trick verwenden, die auf Little-Endian-Systemen funktioniert nur, wie die PIC.
a = b;
a -= *((int8*)((&b)+1));
Aus der Spitze von meinem Kopf, das kommt auf die folgenden Assembler auf einem PIC18:
; a = b
MOVFF 0xc4, 0xc2
NOP
MOVFF 0xc5, 0xc3
NOP
; a -= *((int8*)((&b)+1));
MOVF 0xc5, w
SUBWF 0xc2, f
BTFSC STATUS, C
DECF 0xc
Haben Sie versucht, über die Reaktion auf einen Kommentar? Es gibt jetzt keinen Kommentar, nur eine blaue Box (die zeigt, dass es vom Autor stammt). Vielleicht solltest du das entfernen? – akauppi