主题:C++程序,求解释
此程序是十进制向二进制的转换。
源程序:
int main()
{
int a;
std::cin>>a;
printb(a, sizeof(int) * 8);
return (0);
}
int printb(int a, int n)
{
if (n > 0)
{
putchar('0' + ((unsigned)(a & (1 << (n - 1))) >> (n - 1)));
printb(a, n - 1);
}
return(0);
}
不解的地方是printb()函数的这一句:
putchar('0' + ((unsigned)(a & (1 << (n - 1))) >> (n - 1)));
希望有高手能解释一下它是如何起作用的。
源程序:
int main()
{
int a;
std::cin>>a;
printb(a, sizeof(int) * 8);
return (0);
}
int printb(int a, int n)
{
if (n > 0)
{
putchar('0' + ((unsigned)(a & (1 << (n - 1))) >> (n - 1)));
printb(a, n - 1);
}
return(0);
}
不解的地方是printb()函数的这一句:
putchar('0' + ((unsigned)(a & (1 << (n - 1))) >> (n - 1)));
希望有高手能解释一下它是如何起作用的。