Path: csiph.com!news.mixmin.net!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Tim Rentsch Newsgroups: comp.lang.c Subject: Re: portable way to get highest bit set? Date: Sat, 14 Oct 2023 19:05:05 -0700 Organization: A noiseless patient Spider Lines: 11 Message-ID: <86cyxgabe6.fsf@linuxsc.com> References: <878r884vi5.fsf@bsb.me.uk> <87edi0qide.fsf@bsb.me.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: dont-email.me; posting-host="eb478ed0db5b06d993c3ccd040701c7e"; logging-data="311420"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/9btcAi9th22k+hXulnB6KblY2hca8crc=" User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) Cancel-Lock: sha1:6xxNV4o9QnyVB9Rtu1ItzcsqeUQ= sha1:RxYQiGRRrXTlyqMDYLekbx0nPJU= Xref: csiph.com comp.lang.c:271378 jak writes: > unsigned long h_bit(unsigned long val) > { > int i; > for(i = 0; val > 1; val /= 2, i++); > return val << i; > } A nice compact solution. I like the way it naturally deals with the case when val is zero.