自学内容网 自学内容网

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->

原文地址:https://blog.csdn.net/bcbobo21cn/article/details/143841791

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!