Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
ob WHILE oder FOR sollte eigentlich egal sein, grundlegend sollte man es mit beiden hinbekommen!ob do while oder for oder eine kombi aus beiden geht
(( ( ((1) * 2) + 0 ) * 2 ) + 1) * 2 + 0
1 * 2 * 2 * 2 + 0 * 2 * 2 + 1 * 2 + 0 = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0
Dezimal:
...|100| 10| 1
...| 1 | 0 | 0
= 100d
Binär (Dual)
...| 4 | 2 | 1 |
...| 1 | 0 | 0 |
= 4d
1110
AND 1000
________
1000b = 8d != 0
mask = mask >> 1;
Ich verstehe den Sinn deines bitweisen Wegs nicht. Wenn die Ausgangszahl bereits binär vorliegt, ist doch nichts zu tun?Darum: Nimm den bitweisen Weg, wenn du Performance brauchst, denn dieser Weg ist so ziemlich das Schnellste, was du bekommen kannst.
Tatsächlich ist das die Umrechnung Dezimal -> Binär, mea culpa.Ich verstehe den Sinn deines bitweisen Wegs nicht. Wenn die Ausgangszahl bereits binär vorliegt, ist doch nichts zu tun?
Aber vielleicht ist damit einfach / 2 bzw >> 1 gemeint(?). Oder aber... SaraL hat die Zahl per scanf("%d", &zahl) eingelesen.Danach soll eine schleife kommen die zum einen zahl duch 10 und zum anderen die berrechnung vornimmt.
int zahl = 0;
scanf("%d", &zahl);
for(size_t i = 0; i < 10; i++)
{
if(zahl % 10 == 0) break;
if(zahl % 10 == 1) ret += (1 << i);
zahl /= 10;
}
//Ausgabe.
Sicher?Beim Fragesteller liegt die Zahl in ASCII bzw. BCD (jede Ziffer minus (int) '0') vor.