Frage zu wraparound.
-
hey leute, könnt ihr mir vll sagen wieso für y 4 rauskammt, meiner meinung nach muesste das doch 16 sein, weil 2 hoch 16 ja letztendlioh 0 ergibt (wrap around).
mfg lucbossman
short int x=2, y=0, z=4; float f1, f2; double d1, d2; while(x>0){x=x*x; y+=1;} printf("%d \n",x); /* 1. Ausgabe: 0 printf("%d \n",y); /* 2. Ausgabe: 4
-
Eine Schleife die N-Mal x=x*x macht, errechnet nicht 2^N, sondern 2222...2 (N-Mal).
-
Zudem kommt der Überlauf schon bei 2^15 (signed int).
-
Und ganz ganz streng genommen ist weder definiert, dass short 16-Bits hat, noch was überhaupt bei einem Überlauf passiert.
-
ok leute, danke, hab den denkfehler leider net erkannt. mfg lucbossman
-
Was du wohl meintest wäre mittels Bitshift einfacher zu erreichen gewesen: