C语言编程练习之二进制与八进制相互转换

爱被打了一巴掌 2023-07-14 08:04 80阅读 0赞

二进制转换为八进制:
思路:先将二进制转换为十进制(详细参考我的这篇博客 二、十进制相互转换),然后将十进制转换为八进制(这个我们很熟悉)。
具体代码如下:

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5. long long x;
  6. printf("输入一个二进制数: \n");
  7. scanf("%lld", &x);
  8. printf("二进制数 %lld 转换为八进制为 %d", x, convert(x));
  9. return 0;
  10. }
  11. int convert(long long x)
  12. {
  13. int octalNumber = 0, decimalNumber = 0, i = 0;
  14. while(x != 0)
  15. {
  16. decimalNumber += (x%10) * pow(2,i);
  17. ++i;
  18. x/=10;
  19. }
  20. i = 1;
  21. while (decimalNumber != 0)
  22. {
  23. octalNumber += (decimalNumber % 8) * i;
  24. decimalNumber /= 8;
  25. i *= 10;
  26. }
  27. return octalNumber;
  28. }

结果如下:在这里插入图片描述
八进制转换为二进制:
思路:八进制先转换为十进制再转换为二进制。
具体代码:

  1. #include <stdio.h>
  2. #include <math.h>
  3. long long convert(int x);
  4. int main()
  5. {
  6. int x;
  7. printf("输入一个八进制数: ");
  8. scanf("%d", &x);
  9. printf("八进制数 %d 转二进制为 %lld", x, convert(x));
  10. return 0;
  11. }
  12. long long convert(int x)
  13. {
  14. int decimalNumber = 0, i = 0;
  15. long long binaryNumber = 0;
  16. while(x != 0)
  17. {
  18. decimalNumber += (x%10) * pow(8,i);
  19. ++i;
  20. x/=10;
  21. }
  22. i = 1;
  23. while (decimalNumber != 0)
  24. {
  25. binaryNumber += (decimalNumber % 2) * i;
  26. decimalNumber /= 2;
  27. i *= 10;
  28. }
  29. return binaryNumber;
  30. }

结果如下:
在这里插入图片描述

发表评论

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

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

相关阅读