diff --git a/cutils.h b/cutils.h index 63b94d3cb..72700e15c 100644 --- a/cutils.h +++ b/cutils.h @@ -148,7 +148,7 @@ static inline int clz32(unsigned int a) #ifdef _MSC_VER unsigned long idx; _BitScanReverse(&idx, a); - return 31 ^ idx; + return 31 - idx; #else return __builtin_clz(a); #endif @@ -160,7 +160,7 @@ static inline int clz64(uint64_t a) #ifdef _MSC_VER unsigned long idx; _BitScanReverse64(&idx, a); - return 63 ^ idx; + return 63 - idx; #else return __builtin_clzll(a); #endif @@ -172,7 +172,7 @@ static inline int ctz32(unsigned int a) #ifdef _MSC_VER unsigned long idx; _BitScanForward(&idx, a); - return 31 ^ idx; + return (int)idx; #else return __builtin_ctz(a); #endif @@ -184,7 +184,7 @@ static inline int ctz64(uint64_t a) #ifdef _MSC_VER unsigned long idx; _BitScanForward64(&idx, a); - return 63 ^ idx; + return (int)idx; #else return __builtin_ctzll(a); #endif