#include <stdio.h>
#include <stdint.h>

uint8_t func(uint32_t num, uint8_t shl) {
    return shl * (1 - ((num-(1<<shl)) >> 31));
} 

uint8_t func0(uint32_t num, uint8_t shl)
{
    if (num >= (1 << shl))
    {
        return shl;
    }
    else
    {
        return 0;
    }
}

int main(void) {
	int cnt = 0;
	for (uint16_t num = 0 ; num != 256 ; num++) {
	    for (uint8_t s = 0 ; s != 8 ; s++) {
		    int a = func0(num, s);
		    int b = func(num, s);
		    if (a != b) {
		    	printf("num=%d shl=%d comparison:%d func:%d\n", num, s, a, b);
		    	cnt++;
		    }
	    }
	}
	printf("Number of differences: %d\n", cnt);
	return 0;
}
