求助,本人小白;用C语言怎么用2种不同思路输出OXE3的二进制?

求助,本人小白;用C语言怎么用2种不同思路输出OXE3的二进制?还有16进制,10进制与二进制的转换问题

3个回答

某数 n 转换为 t 进制的数 m,以最低位为0位第 i 位的值为 ( n / ( t ^ i ) ) % t。明白了就可以写循环输出了。

另外,还可以使用现成的函数,比如itoa(注意,vc++有这个函数,但是gcc下没有,因为它不是标准函数)

 #include "stdlib.h"

int main () {
    int x = 0xE3;
    char result[20];
    itoa(x, result, 2);
    printf("%s", result);
    return 0;
}

不是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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!