die minimalisten version:
|
C/C++ Quellcode
|
1
2
3
4
5
6
7
|
void udual(int n)
{
do
putc(n & 1 ? '1' : '0',stdout);
while (( n = n >> 1));
putc('\n',stdout);
}
|
Erklährung für die Ungeübten:
n & 1 bedeutet "gib mir das tiefste bit von n" (sowas wie n % 2)
z = x ? a : b bedeutet das gleiche wie
|
C/C++ Quellcode
|
1
2
3
4
|
if(x)
z= a;
else
z = b;
|
n = n >> 1 bedeutet die Zahl n um ein bit nach rechts verschieben. Oder anders gesagt durch zwei teilen und den rest (ein halbes bit?) fortwerfen.
also wir lesen das niedrigste bit, schreibens als character raus und schieben. Und das tun wir solange wir nach dem shiften noch bits haben.
Viel kompakter gehts nicht mehr.