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.