打印整数的二进制形式的功能

ccqiji 2010-03-13 01:42:15
const int ALL1 = ~0;

void print_bin(const int a) {
int flag = 0x80;
while(flag != 0) {
printf("%d", ALL1 == (a | ~flag));
flag /= 2;
}
}


printf("%d", ALL1 == (a | ~flag));

这个语句是不是输出1和0的
是不是从第一位开始判断是0和1输出 一直到最后一位??
...全文
212 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thirty 2010-03-13
  • 打赏
  • 举报
回复

//1
void binary(long n)
{ char c;
if(n/2)
binary(n/2);
c=n%2+48;
putchar(c); }
//2
void f(int n)
{
for(int i=31;i>=0;i--)
{
if(n & (1<<i))
printf("1");
else
printf("0");
}
}
mstlq 2010-03-13
  • 打赏
  • 举报
回复
请用下面套路

#include <stdio.h>
int main(void)
{
void printf_bin(const int a);
printf("请输入一个十进制的数字:\n");
unsigned int a;
scanf("%d",&a);
printf_bin(a);
return 1;
}
void printf_bin(const int a)
{
int flag=0;
unsigned int mask=0x01<<(sizeof(unsigned int)*8-1);
for(; mask!=0; mask>>=1) {
if(flag==0 && (mask&a)==0 ) continue;
flag=1;
printf("%d",(mask&a)!=0);
}
}
ccqiji 2010-03-13
  • 打赏
  • 举报
回复
#include <stdio.h>
int main(void)
{
void printf_bin(const int a);
printf("请输入一个十进制的数字:\n");
int a;
scanf("%d",&a);
printf_bin(a);
return 1;
}
void printf_bin(const int a)
{
int all=~0;
int flag=0x80;
for(;flag!=0;flag/=2)
{
printf("%d",all==(a|~flag));
}
}

我输入10 输出的是00001010
怎么样只输出1010
stardust20 2010-03-13
  • 打赏
  • 举报
回复

printf("%d", ALL1 == (a | ~flag)); //==是判断ALL1 是否等于(a | ~flag)
返回结果不是true就是false,以%d的形式输出true输出1 false输出0
ccqiji 2010-03-13
  • 打赏
  • 举报
回复
还有 问下 赋值运算和位运算是不是位运算效率高

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧