时荒小先生 发表于 2020-4-6 21:29:06

一道C的数制转换题

这是我们一道作业题,不咋会,请教一下各位帅气漂亮的小哥哥小姐姐{:10_327:}

以下是题目描述:

输入一个十进制整数(int 型),输出该数的十六进制形式,再以十六进制形式分别输出该数高端2字节和低端2字节对应的值,逗号分隔。

输入输出格式:
输入:一个整数(十进制)
输出:第一行该数的十六进制;第二行该十六进制数高端2字节(逗号分隔)该十六进制数低端2字节
提示:int a=1;printf("%04d",a);则输出为:0001

样例输入:
-32768
样例输出:
ffff8000
ffff,8000

人造人 发表于 2020-4-6 21:29:07

#include <stdio.h>

int main(void) {
    int num;
    scanf("%d", &num);
    printf("%.8x\n", num);
    printf("%.4x,%.4x\n", (unsigned)num >> 16, num & 0xffff);
    return 0;
}

howzyao 发表于 2020-4-7 06:40:38

返回0之上的一句,能不能详细演示讲解一个?

时荒小先生 发表于 2020-4-7 08:53:50

人造人 发表于 2020-4-7 00:56


可以稍微讲解一下吗,刚开始学C ,有点看不懂{:10_266:}- 32768
cccccccc
cccc,cccc
我运行完的结果咋跟示例不一样呢

墨羽岚 发表于 2020-4-7 09:28:56

时荒小先生 发表于 2020-4-7 08:53
可以稍微讲解一下吗,刚开始学C ,有点看不懂
我运行完的结果咋跟示例不一样呢

你多输入了一个空格{:10_334:}

编程鱼C 发表于 2020-4-7 09:35:19

在C语言中,打印16进制可以使用printf的%x格式。

打印二进制数并没有现成的格式数值,只能自行编写函数打印。

以下是一个打印二进制值的函数,通过位操作,逐位判断二进制值,并输出对应的值。

默认高位0不输出。

时荒小先生 发表于 2020-4-7 09:38:16

墨羽岚 发表于 2020-4-7 09:28
你多输入了一个空格

Oh,my god!!!!!!!!!
我傻了{:10_266:}

大河之jian 发表于 2020-4-7 13:24:58

时荒小先生 发表于 2020-4-7 08:53
可以稍微讲解一下吗,刚开始学C ,有点看不懂
我运行完的结果咋跟示例不一样呢

我是可以正常运行的
32768才会显示你的上面的内容

人造人 发表于 2020-4-7 13:52:48

时荒小先生 发表于 2020-4-7 08:53
可以稍微讲解一下吗,刚开始学C ,有点看不懂
我运行完的结果咋跟示例不一样呢

C语言的位运算
页: [1]
查看完整版本: 一道C的数制转换题