Jus检查这个程序.从逻辑上看它看起来很好,但它为所有东西提供了000000000000000000000
#include<stdio.h>
void main()
{
int n=25,k=32;
printf("binary equivalent\n");
while(k!=0)
{
if((n>>1&0x01)!=0)
printf("1");
else
printf("0");
k--;
}
}
Run Code Online (Sandbox Code Playgroud)
你永远不会改变n.
不要试图将所有东西塞进一行,更加冗长,以便更清楚.
while(k!=0)
{
if((n & 0x01) != 0)
printf("1");
else
printf("0");
k--;
n >>= 1;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
那是因为你没有改变n.
对于n = 25,我们有(n >> 1)= 12因此它打印为零.而且由于你没有改变n,它为所有k打印零.
您可以通过以下方式更改它:
#include
void main()
{
int n=25,k=32;
printf("binary equivalent\n");
while(k!=0)
{
if((n & 0x01)!=0)
printf("1");
else
printf("0");
k--;
n = n >> 1;
}
}
但是它会以反向形式打印二进制表示.
| 归档时间: |
|
| 查看次数: |
10849 次 |
| 最近记录: |