请大家先看下面的代码。
问:
对于int value = (number>>temp) & 1;这句代码 我想问按位与操作不是要对二进制数进行运算的吗?为什么能直接对整数num进行运算?难道系统自动转换了?自动转换了为什么不直接输出?
我记得我们人工十进制转换成二进制都要进行计算得出,为什么电脑通过按位与运算,和右移运算就能求出?我很想知道代码中其中的原理
请大家帮忙说下这个过程是什么。
代码如下:
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");
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.