C语言用按位与判断一个数是否是2的幂次方
一个数是2的幂次方时,其二进制表示中只有一个位是1,其余位都是0。
可以通过位运算来判断,
与运算:将该数与该数减1的结果进行与运算(x & (x - 1)),如果结果为0,则该数是2的幂次方;否则不是;
int isPowerOfTwo(int );
......
void CMcView::OnDraw(CDC* pDC)
{
CMcDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString str1;
int n1=32, n2=45, n3=128, n4=105;
if (isPowerOfTwo(n1)) {
str1.Format("%d 是2的幂次方;", n1);
} else {
str1.Format("%d 不是2的幂次方;", n1);
}
pDC->TextOut(30, 30, str1);
if (isPowerOfTwo(n2)) {
str1.Format("%d 是2的幂次方;", n2);
} else {
str1.Format("%d 不是2的幂次方;", n2);
}
pDC->