一个数是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 hereCString 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->