要求打印一个整数的二进制位状态,整数是4个字节,就是32位。可以通过位运算来实现,&与操作是: 1 & 1 = 1,1 & 0 = 0,0&1 =0,0&0=0;即都是真才会为真,可以通过1和任何二进制位相&得到那个二进制位。
void printBinary(int num){
for(int i =31;i>=0;i--){
int temp = (num & (1<<i))==0?0:1;
std::cout<<temp;
}
std::cout<< std::endl;
}
补充:一个数左移一位相当于乘2,右移一位相当于除2;这个常在二分查找中看到,因为二分查找直接(left + right)/2 可能会有溢出问题,常通过left + (right - left)>>1 实现。
负号- 操作:可以通过取反加1实现:- num = ~num+1