Naja, ein Linksshift ist eben per Definition keine Multiplikation (obwohl er gerne dafür eingesetzt wird)
verwendet man den "normalen" *-Operator, stimmt auch die Rechnung wieder
edit:
auch interessant ist, was der C-Standard zu dem Thema zu sagen hat:
Man muss also bei diesem Operator schon aufpassen in welchen Fällen man ihn einsetzt, denn nicht immer ist das Ergebnis definiert (beim Rechtsshift als Division ist es noch schlimmer)The result of E1 << E2 is E1 left-shifted E2 bit positions; vacated bits are filled with zeros. If E1 has an unsigned type, the value of the result is E1 × 2^E2, reduced modulo one more than the maximum value representable in the result type. If E1 has a signed type and nonnegative value, and E1 × 2^E2 is representable in the result type, then that is the resulting value; otherwise, the behavior is undefined.
Lesezeichen