#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
uint32_t iterations = 0;
uint32_t div_val(uint32_t x, uint32_t divider){
uint32_t res = 0;
uint32_t pow2=1;
uint32_t divider_pow = divider;
// Get the x shifted on N bits right
while (x > divider_pow) {
divider_pow <<= 1;
pow2 <<= 1;
iterations++;
}
while (x) {
if (x >= divider_pow) {
x -= divider_pow;
res += pow2;
} else {
divider_pow >>= 1;
pow2 >>= 1;
}
iterations++;
}
return res;
}
int main(void) {
volatile uint32_t x = 552672;
uint32_t value = div_val(x, 10);
printf("Hello: %d\n", value);
printf("Iterations: %d\n", iterations);
}