| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 44051 人关注过本帖
标题:在C语言中怎么把一个数转换成二进制然后输出呢?
只看楼主 加入收藏
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

水一个


[CODE]#include <stdio.h>
int main()
{
int n = 1024;
char bArray[32];
for(int i=0;i<32;++i) bArray[i]= '\0';
_asm //是编译器不同用法不同
{
mov eax,n
lea ebx,bArray
mov ecx,32
rl:
shr eax,01
jnc d
mov dl,1
add dl,48
mov [ebx+ecx-1],dl
dec ecx
jne rl
jmp ou
d:
mov [ebx+ecx-1],48
dec ecx
jne rl
ou:
}
bool flag = false;
for(int i = 0;i<32;++i)
{
if ( bArray[i] != '0' ) flag = true;
if ( flag ) putchar(bArray[i]);
}
return 0;
}[/CODE]


天行健,君子以自强不息!!QQ:68660681
2007-08-24 16:30
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
在C中嵌入汇编

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2007-08-24 16:35
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
回复:(weishanhu03)在C语言中怎么把一个数转换成二...

/*---------------------------------------------------------------------------
File name: 二进制转换.c
Author: HJin (email: fish_sea_bird [at] yahoo [dot] com )
Created on: 8/24/2007 01:42:24
Environment: Windows XP Professional SP2 English +
Visual Studio 2005 v8.0.50727.762


Modification history:
===========================================================================


Problem statement:
---------------------------------------------------------------------------
http://bbs.bc-cn.net/viewthread.php?tid=164607

在C语言中怎么把一个数转换成二进制然后输出呢?
比如:
int a=12;
怎么把他以二进制的形式1100输出呢?


Sample output:
---------------------------------------------------------------------------

Please enter an integer:
0
0
There are 1 binary bits.
0

Please enter an integer:
1
1
There are 1 binary bits.
1

Please enter an integer:
12
1100
There are 4 binary bits.
1100

Please enter an integer:
31
11111
There are 5 binary bits.
11111

Please enter an integer:
2147483647
1111111111111111111111111111111
There are 31 binary bits.
1111111111111111111111111111111

Please enter an integer:
-1
11111111111111111111111111111111
There are 32 binary bits.
11111111111111111111111111111111

Please enter an integer:
-2
11111111111111111111111111111110
There are 32 binary bits.
11111111111111111111111111111110

Please enter an integer:
-2147483647
10000000000000000000000000000001
There are 32 binary bits.
10000000000000000000000000000001

Please enter an integer:
-2147483648
10000000000000000000000000000000
There are 32 binary bits.
10000000000000000000000000000000

Please enter an integer:

*/

#include <stdio.h>
#include <stdlib.h>

int main()
{
int n;
int numBits;
int t;
int i;
char s[50];

while(1)
{
puts("\nPlease enter an integer: ");
scanf("%d", &n);

// Option 1
// itoa --- note that
// itoa is NOT a standard C function.
itoa(n, s, 2);
puts(s);


// Option 2:
if(n>=0)
{
numBits=0;
t=n;
do
{
++numBits;
t>>=1;
}
while(t);
}
else
{
numBits=32;
}
printf("There are %d binary bits.\n", numBits);

for(i=numBits-1; i>=0; --i)
{
printf("%d", (n>>i)&1);
}
printf("\n");
}

return 0;
}


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-24 16:45
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 

You have lots more to work on! Never give up!c language!
2007-08-24 16:47
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
#include <stdio.h>
void Foo(int a,int b)
{
if(a||b)
{
Foo(a>>1,b-1);
printf("%d",a&0x1);
}
}
int main()
{
int a;
while(scanf("%d",&a)==1)
{
printf("\n");
Foo(a,8);
printf("\n");
}
return 0;
}

祝天下所有母亲幸福安康!~
2007-08-24 16:54
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
if(a||b)
==>if(a&&b)

祝天下所有母亲幸福安康!~
2007-08-24 17:05
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
回复:(google)if(a||b)==>if(a&&b)

nice recursion algorihtm.

I did a few modifications to your algorithm:

=================================
#include <stdio.h>
void Foo(int a, int b)
{
if (a && b)
{
Foo(a >> 1, b - 1);
printf("%d", a& 0x1);
}
}

int main()
{
int a;
while (scanf("%d", &a) == 1)
{
if(a==0)
{
printf("0\n\n");
continue;
}
Foo(a, 32);
printf("\n\n");
}
return 0;
}


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-24 17:18
mayi2007
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-19
收藏
得分:0 
以下是引用学技术的在2007-8-23 9:18:13的发言:

用itoa这个函数也可以帮你完成转换。下面那个红色的10就是转换的进制。

函数名: itoa
功 能: 把一整数转换为字符串
用 法: char *itoa(int value, char *string, int radix);
程序例:

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
int number = 12345;
char string[25];

itoa(number, string, 10);
printf("integer = %d string = %s\n", number, string);
return 0;
}

根本就不能用。。。。。

2007-08-24 17:40
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
还有辗转除余输出,就像你自己算一样

You have lots more to work on! Never give up!c language!
2007-08-24 17:43
学技术的
Rank: 2
等 级:论坛游民
帖 子:91
专家分:45
注 册:2007-8-5
收藏
得分:0 
回复18楼的。能详细说下怎么不能用的
2007-08-24 17:50
快速回复:在C语言中怎么把一个数转换成二进制然后输出呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012588 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved