例题1、以下程序输出结果是?(附答案)
#include <iostream>
using namespace std;
int main()
{
unsigned char a = 0xa5; //首先是1010 0101
unsigned char b = ~a >> 4 + 1; //~优先级位于第2 >> 位于第6 +位于第5 所以先取反,然后计算出5,然后右移5位
//a 取反 0101 1010 但是会发生整数提升,即a提升为int型,即左边补24个0,这时再右移5位变成
//左边24个1 加上 0101 1010,由于char是一个字节,所以取8位变成 1111 1010 即250
//cout<<b<<endl;
printf("%d\n", b);
return 0;
}
例题2、不用循环判断一个数是不是2的N次方?
#include <iostream>
using namespace std;
int main()
{