[22]A co když budete potřebovat ještě větší čísla?
Jinak +1 pro řešení v [16]/[21]. Stačí vymaskovat poslední bit a spočítat ho zvlášť. Výsledek je 100% správně a určitě rychlejší než postup v blogu. Protože:
1) Pokud to má být přenositelné, tak se nemůžu spoléhat, že ALU používá dvojkový doplněk.
2) Každý skok a tudíž každý if je výkonostní průšvih.
3) Pokud to uděláte jako makro/inline funkci tak ve výsledku tam bude kupa převážně bezkolizních bitových operací za sebou bez jediného skoku. Superskalární procesor vás za to bude milovat.