(突然发现可以直接转换。。。)C语言 之 十六进制数与十进制数的相互转换。十六进制数的加减法

本文详细介绍了十六进制与十进制之间的相互转换方法,包括十六进制到十进制的转换算法及代码实现,以及十进制到十六进制的转换过程。此外,还提供了十六进制数之间的加减法运算示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天孤陋寡闻的我突然发现这个进制转换是可以直接转换的。。。
因为计算机内部都是以二进制进行编码的。

至于之间的计算,就当作十进制计算就好了。

1.以十进制,八进制,十六进制输入。以十进制输出:
转十进制

2.以十进制输入。以十进制,八进制,十六进制输出:
转八进制,十六进制

-----------------------------------以前那个 憨憨的自己 写的---------------------------------

文章目录

1.十六进制数转换成十进制数

2.十进制数转换成十六进制数

3.十六进制数之间的加减法



十六进制数转换成十进制数

题目:输入一个十六进制数,以十进制输出。。。
代码:

#include<stdio.h>
int main()
{
	char a[10];
	int b=0,len,i=0;
	gets(a);      //输入十六进制数
	
	len=strlen(a);
	if(a[0]=='-'||a[0]=='+')   //判断正负数
	{
		i=1;
	}
	while(i!=len)
	{
		b=b*16;
		switch(a[i])
		{
			case 'A':b=b+10;break;
			case 'B':b=b+11;break;
			case 'C':b=b+12;break;
			case 'D':b=b+13;break;
			case 'E':b=b+14;break;
			case 'F':b=b+15;break;
			default:b=b+a[i]-48;
		}
		i++;
	}	
	
	if(a[0]=='-')
		b=b*(-1);
	printf("%d\n",b);
	return 0;
}

样例 1 输入:

+A 

输出:

10

样例 2 输入:

-1A 

输出:

-26

样例 3 输入:

2C 

输出:

44


十进制数转换成十六进制数

#include<stdio.h>
int main()
{
	char b[17];
	long long num;
	int i,j;
	scanf("%lld",&num);          //输入一个整数 
	i=-1;
	if(num<0)            //判断 num 的正负
	{	printf("-");
		num=num*(-1);
	}
	if(num==0)             //若 num 为0,则输出0 后结束运行 
	{
		printf("0\n");
		return 0;
	}
	else                      //若 num 不为0 
	{
	while(num/16)
	{i++;                       //num连续除以16,并取余 
		switch(num%16)
		{
			case 10:b[i]='A';break;
			case 11:b[i]='B';break;
			case 12:b[i]='C';break;
			case 13:b[i]='D';break;
			case 14:b[i]='E';break;
			case 15:b[i]='F';break;
			default:b[i]=num%16+48;
		}
		num=num/16;
	}
	if(num%16!=0)
	{i++;
	switch(num%16)
		{
			case 10:b[i]='A';break;
			case 11:b[i]='B';break;
			case 12:b[i]='C';break;
			case 13:b[i]='D';break;
			case 14:b[i]='E';break;
			case 15:b[i]='F';break;
			default:b[i]=num%16+48;
		}
	}
	for(;i>=0;i--)               //倒序输出 
		printf("%c",b[i]);
	printf("\n");
	}
	return 0; 
}

样例 1 输入:

10

输出:

A 

样例 2 输入:

-199

输出:

-C7

样例 3 输入:

-128 

输出:

-80


十六进制数之间的加减法

#include<stdio.h>
int main()
{
	long long a,b;
	scanf("%llx %llx",&a,&b);
	if(a+b>=0)
		printf("%llx\n",a+b);
	else
		printf("-%llx\n",-(a+b));
	return 0;
}

样例 1 输入:

2C 1A

输出:

46

样例 2 输入:

30 2C

输出:

5c

样例 3 输入:

1A -2C 

输出:

-12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值