Ovšem tohle nebude fungovat minimálně pro tento případ:
A=0x80, B=0xff a carry=true
vysledek bude C=0x80, v signed je -128, což bude menší než 0
takže
(int)(a | b) < 0 je true
AND
(int)c >= 0 je false
=
carry je false, ale mělo být true
Nemysli si, že jsem nepřemýšlel o tom, jak to udělat jednodušší, ale přičtení současně CY a 0xff dělá problémy.
Asi by to šlo pomocí pár xorů a andů, ale složitostí se to pak už blížilo tomu mému programu na 12 řádků.
A nebo je v tom algoritmu ještě stále někde chyba a nevidím ji.