| www.delorie.com/archives/browse.cgi | search |
| X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f |
| Received-SPF: | none (free.tvtel.pt: domain of cosmos AT tvtel DOT pt does not designate permitted sender hosts) |
| Message-ID: | <00bd01c5615f$ce6a7d80$b40a6652@rui> |
| From: | "cosmos" <cosmos AT tvtel DOT pt> |
| To: | <djgpp AT delorie DOT com> |
| References: | <1116997063 DOT 905915 DOT 71670 AT z14g2000cwz DOT googlegroups DOT com> <d71i5h$t6h$1 AT nntp DOT fujitsu-siemens DOT com> <3E3le.7676$M36 DOT 381 AT newsread1 DOT news DOT atl DOT earthlink DOT net> |
| Subject: | Re: to check given no. is power of 2 |
| Date: | Wed, 25 May 2005 20:27:30 +0100 |
| MIME-Version: | 1.0 |
| X-Priority: | 3 |
| X-MSMail-Priority: | Normal |
| X-Mailer: | Microsoft Outlook Express 6.00.2800.1106 |
| X-MimeOLE: | Produced By Microsoft MimeOLE V6.00.2800.1106 |
| X-Virus-Scanned: | ClamAV version 0.84, clamav-milter version 0.84e on free.tvtel.pt |
| X-Virus-Status: | Clean |
| Reply-To: | djgpp AT delorie DOT com |
Hi,
Mathematically, a given number "N" is a power of 2 if "log(N) / log(2)" is
an integer, right? So:
#include <stdio.h>
#include <math.h>
double param, fractpart, intpart;
param = log(N) / log(2);
fractpart = modf (param , &intpart);
if (fracpart == 0)return 1; else return 0;Regards,Rui Fernandes
----- Original Message -----
From: "Martin Ambuhl" <mambuhl AT earthlink DOT net>
Newsgroups: comp.os.msdos.djgpp
To: <djgpp AT delorie DOT com>
Sent: Wednesday, May 25, 2005 7:39 PM
Subject: Re: to check given no. is power of 2
> Gerd Termathe wrote:
> > "aveo" <rahul DOT h AT gmail DOT com> schrieb im Newsbeitrag
> > news:1116997063 DOT 905915 DOT 71670 AT z14g2000cwz DOT googlegroups DOT com...
> >
> >>hi all
> >>i need a C code that checks given no. is power of 2 or not without
> >>checking any condition.
> >>
> >
> >
> > int is_power_of_2 (int N)
> > {
> > if ( N!=0 && (N&(N-1))==0 ) return 1; else return 0;
> > }
>
> Why an if ... else?
> Why use uppercase for non-macros?
> Why use signed integers?
>
> inline unsigned is_power_of_2 (unsigned n)
> {
> return (n && !(n&(n-1)));
> }
>
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |