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

拼搏现实的明天。 2023-07-07 12:55 35阅读 0赞

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

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

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

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

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

文章目录

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

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

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



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

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

  1. #include<stdio.h>
  2. int main()
  3. {
  4. char a[10];
  5. int b=0,len,i=0;
  6. gets(a); //输入十六进制数
  7. len=strlen(a);
  8. if(a[0]=='-'||a[0]=='+') //判断正负数
  9. {
  10. i=1;
  11. }
  12. while(i!=len)
  13. {
  14. b=b*16;
  15. switch(a[i])
  16. {
  17. case 'A':b=b+10;break;
  18. case 'B':b=b+11;break;
  19. case 'C':b=b+12;break;
  20. case 'D':b=b+13;break;
  21. case 'E':b=b+14;break;
  22. case 'F':b=b+15;break;
  23. default:b=b+a[i]-48;
  24. }
  25. i++;
  26. }
  27. if(a[0]=='-')
  28. b=b*(-1);
  29. printf("%d\n",b);
  30. return 0;
  31. }

样例 1 输入:

  1. +A

输出:

  1. 10

样例 2 输入:

  1. -1A

输出:

  1. -26

样例 3 输入:

  1. 2C

输出:

  1. 44


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

  1. #include<stdio.h>
  2. int main()
  3. {
  4. char b[17];
  5. long long num;
  6. int i,j;
  7. scanf("%lld",&num); //输入一个整数
  8. i=-1;
  9. if(num<0) //判断 num 的正负
  10. { printf("-");
  11. num=num*(-1);
  12. }
  13. if(num==0) //若 num 为0,则输出0 后结束运行
  14. {
  15. printf("0\n");
  16. return 0;
  17. }
  18. else //若 num 不为0
  19. {
  20. while(num/16)
  21. { i++; //num连续除以16,并取余
  22. switch(num%16)
  23. {
  24. case 10:b[i]='A';break;
  25. case 11:b[i]='B';break;
  26. case 12:b[i]='C';break;
  27. case 13:b[i]='D';break;
  28. case 14:b[i]='E';break;
  29. case 15:b[i]='F';break;
  30. default:b[i]=num%16+48;
  31. }
  32. num=num/16;
  33. }
  34. if(num%16!=0)
  35. { i++;
  36. switch(num%16)
  37. {
  38. case 10:b[i]='A';break;
  39. case 11:b[i]='B';break;
  40. case 12:b[i]='C';break;
  41. case 13:b[i]='D';break;
  42. case 14:b[i]='E';break;
  43. case 15:b[i]='F';break;
  44. default:b[i]=num%16+48;
  45. }
  46. }
  47. for(;i>=0;i--) //倒序输出
  48. printf("%c",b[i]);
  49. printf("\n");
  50. }
  51. return 0;
  52. }

样例 1 输入:

  1. 10

输出:

  1. A

样例 2 输入:

  1. -199

输出:

  1. -C7

样例 3 输入:

  1. -128

输出:

  1. -80


十六进制数之间的加减法

  1. #include<stdio.h>
  2. int main()
  3. {
  4. long long a,b;
  5. scanf("%llx %llx",&a,&b);
  6. if(a+b>=0)
  7. printf("%llx\n",a+b);
  8. else
  9. printf("-%llx\n",-(a+b));
  10. return 0;
  11. }

样例 1 输入:

  1. 2C 1A

输出:

  1. 46

样例 2 输入:

  1. 30 2C

输出:

  1. 5c

样例 3 输入:

  1. 1A -2C

输出:

  1. -12

发表评论

表情:
评论列表 (有 0 条评论,35人围观)

还没有评论,来说两句吧...

相关阅读