请大家先看下面的代码。
问:
对于int value = (number>>temp) & 1;这句代码 我想问按位与操作不是要对二进制数进行运算的吗?为什么能直接对整数num进行运算?难道系统自动转换了?自动转换了为什么不直接输出?
我记得我们人工十进制转换成二进制都要进行计算得出,为什么电脑通过按位与运算,和右移运算就能求出?我很想知道代码中其中的原理
请大家帮忙说下这个过程是什么。
代码如下:
include <stdio.h>
void printBinary(int number);
int main()
{
printBinary(-10);
return 0;
}
void printBinary(int number)
{
// 记录现在挪到第几位
// (sizeof(number)*8) - 1 == 31
int temp = ( sizeof(number)<<3 ) - 1;
while ( temp >= 0 )
{
// 先挪位,再&1,取出对应位的值
int value = (number>>temp) & 1;
printf("%d", value);
//
temp--;
// 每输出4位,就输出一个空格
if ( (temp + 1) % 4 == 0 )
{
printf(" ");
}
} printf("\n");
}