55 lines
467 B
C
55 lines
467 B
C
/*
|
|
misc.c
|
|
*/
|
|
|
|
#include "mach.h"
|
|
|
|
int power_of_2(n, ref_exp)
|
|
int n, *ref_exp;
|
|
{
|
|
int exp;
|
|
|
|
exp= 0;
|
|
if (n<0)
|
|
n= -n;
|
|
|
|
if (!n)
|
|
return 0;
|
|
|
|
while (!(n % 2))
|
|
{
|
|
n= n/2;
|
|
exp++;
|
|
}
|
|
if (n != 1)
|
|
return 0;
|
|
|
|
if (ref_exp)
|
|
*ref_exp= exp;
|
|
return 1;
|
|
}
|
|
|
|
int uns_power_of_2(n, ref_exp)
|
|
unsigned n, *ref_exp;
|
|
{
|
|
int exp;
|
|
|
|
exp= 0;
|
|
|
|
if (!n)
|
|
return 0;
|
|
|
|
while (!(n % 2))
|
|
{
|
|
n= n/2;
|
|
exp++;
|
|
}
|
|
if (n != 1)
|
|
return 0;
|
|
|
|
if (ref_exp)
|
|
*ref_exp= exp;
|
|
return 1;
|
|
}
|
|
|