clz

Nicholas Wilson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Apr 1 22:28:08 PDT 2017


I have this c++ code with clang

uint32_t val = 1111490560;
int leading_zeros = __builtin_clz( val << 1); // equals 0
int leading_ones  = __builtin_clz(~val << 1); // equals 1
return (lz == 0 ? lo - 1 : -lz);

and want to translate it to D.

import core.bitop : bsf,bsr;

uint val = 1111490560;

int leading_zeros_r = bsr( val << 1); // equals 31
int leading_ones_r  = bsr(~val << 1); // equals 30
int leading_zeros_f = bsf( val << 1); // equals 23
int leading_ones_f  = bsf(~val << 1); // equals 1


 From what I gather from wikipedia I ought to be using bsr. But 
none of them work.

WTF?





More information about the Digitalmars-d-learn mailing list