本帖最后由 jackz007 于 2024-2-29 13:19 编辑
二进制、八进制、十进制、十六进制只是对数值不同的表达形式而已,在人机交互的过程中,通过 scanf() 输入数据就是把文本转化为数值,而通过 printf() 输出数据则是把数据转化为文本,这一切都是为了顺应人类的习惯和要求。#include <stdio.h>
char * dec2bin(char s[] , unsigned long long d)
{
unsigned long long k ;
int n ;
for(k = d , n = 0 ; k > 0 ; n ++) k /= 2 ;
if(! n) s[n ++] = '0' ;
s[n] = '\0' ;
for(k = d ; k > 0 ; n -- , k /= 2) s[n - 1] = '0' + (k % 2) ;
return s ;
}
main(void)
{
char s[65] ;
unsigned long long d ;
printf("请输入一个十进制数:") ;
scanf("%I64u" , & d) ;
printf("%s\n" , dec2bin(s , d)) ;
}
编译、运行实况:D:\[exercise]\C>dec2bin
请输入一个十进制数:18446744073709551615
1111111111111111111111111111111111111111111111111111111111111111
D:\[exercise]\C>dec2bin
请输入一个十进制数:17293822569102704655
1111000000000000000000000000000000000000000000000000000000001111
D:\[exercise]\C>dec2bin
请输入一个十进制数:12297829382473034410
1010101010101010101010101010101010101010101010101010101010101010
D:\[exercise]\C>dec2bin
请输入一个十进制数:6148914691236517205
101010101010101010101010101010101010101010101010101010101010101
D:\[exercise]\C>
|