求助,本人小白;用C语言怎么用2种不同思路输出OXE3的二进制?还有16进制,10进制与二进制的转换问题
某数 n 转换为 t 进制的数 m,以最低位为0位第 i 位的值为 ( n / ( t ^ i ) ) % t。明白了就可以写循环输出了。
不是OX(欧X),而是0x
思路1:
查表,
char table[16] = { "0000", "0001", "0010", ... "1111" };
char num[] = "E3";
for (int i = 0; i {
if (num[i] >= 'A' && num[i] <= 'F') printf("%s", table[num[i] + 10 - 'A']); else printf("%s", table[num[i] - '0']);
}
思路二:递归
#include <stdio.h>
void foo(int num)
{
if (num / 2 > 0)
foo(num / 2);
printf("%d", num % 2);
}
int main () {
int num = 0xE3;
foo(num);
return 0;
}
11100011
另外,还可以使用现成的函数,比如itoa(注意,vc++有这个函数,但是gcc下没有,因为它不是标准函数)
#include "stdlib.h"
int main () {
int x = 0xE3;
char result[20];
itoa(x, result, 2);
printf("%s", result);
return 0;
}