Ik heb een random getal en die wil ik (indien nodig) ophogen totdat het een macht van twee is. Ik dacht dus aan het volgende:
Hierbij gooi ik dus whichever positief getal erin en krijg ik een 2^n terug (als ik 31 erin gooi krijg ik 32 terug). Maar... Heeft C hier niet een simpele(re) functie voor? Ik vind een loop nou niet echt de meest elegante manier hiervoor...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #include <stdio.h>
unsigned int
power_of_two (unsigned int num)
{
unsigned int bits = 0;
num--; /* 2^n nums have one extra bit set */
while(num)
{
num >>= 1;
bits++;
}
return 1<<bits;
} |
Hierbij gooi ik dus whichever positief getal erin en krijg ik een 2^n terug (als ik 31 erin gooi krijg ik 32 terug). Maar... Heeft C hier niet een simpele(re) functie voor? Ik vind een loop nou niet echt de meest elegante manier hiervoor...