21xrx.com
2024-12-22 21:42:18 Sunday
登录
文章检索 我的文章 写文章
C++实现10进制转8进制
2023-07-11 07:43:21 深夜i     --     --
C++ 10进制 8进制 实现

C++是一门高效、强大的编程语言,可以用来编写各种程序。其中,C++可以用来实现10进制转8进制的功能。本文将简要介绍如何利用C++实现10进制转8进制的过程。

首先,我们需要明确10进制转8进制的原理。在10进制中,每个数码可以表示0-9的数字;而在8进制中,每个数码可以表示0-7的数字。因此,将10进制数转为8进制数,需要将其转化为二进制数再进行计算。

具体来说,将10进制数n转为8进制数需要进行以下步骤:

1. 将n转化为二进制数。

2. 将二进制数每三位一组分组,不足三位的在前面补零。

3. 将每组二进制数转为对应的8进制数。

4. 将每组的8进制数拼接起来,即为最终结果。

有了以上的转化步骤,我们就可以在C++中进行编程实现了。

首先,我们需要定义一个函数,用来将10进制数转化为二进制数。下面的代码段展示了如何在C++中实现这个函数:


string decimalToBinary(int n) {

 string res = "";

 while (n > 0) {

  res = to_string(n % 2) + res;

  n /= 2;

 }

 return res;

}

在上面的代码中,我们定义了一个string类型的变量res,用来存储二进制数。首先,我们通过一个while循环来将10进制数n转化为二进制数。循环的条件是n大于0。在循环体内,我们用n%2来获取当前最低位的数字,然后用to_string()函数将其转化为字符串并拼接到res的最前面。接着用n/2来得到下一个最低位的数字,直到n等于0。

有了将10进制数转为二进制数的函数,我们就可以进行后面的计算了。下面的代码段展示了如何将二进制数转化为8进制数:


string binaryToOctal(string binary) {

  string res = "";

  int len = binary.length(), i = 0;

  while (i < len) {

    if (i + 3 <= len) {

      int sum = (binary[i] - '0') * 4 + (binary[i + 1] - '0') * 2 + (binary[i + 2] - '0');

      res += to_string(sum);

      i += 3;

    } else {

      int sum = 0;

      while (i < len) {

        sum = sum * 2 + (binary[i] - '0');

        ++i;

      }

      res += to_string(sum);

    }

  }

  return res;

}

在上面的代码中,我们定义了一个字符串变量res,用来存储8进制数。我们通过一个while循环来遍历二进制数binary中的每一位。当i + 3 <= len时,我们取出当前三位二进制数,并将其转化为对应的8进制数sum。然后将sum转化为字符串类型,拼接到res的最后面。同时,我们将i的值加上3,以便接着处理下一组三位二进制数。当i + 3 > len时,说明最后一组三位二进制数的长度不足3位。因此,我们需要将剩余的所有二进制数转化为一个8进制数sum,然后拼接到res的最后面。

最后,我们可以将上面的两个函数合并起来,并且添加一些输入输出语句,来形成一个完整的C++程序。下面的代码展示了这个程序的实现:


#include <iostream>

#include <string>

using namespace std;

string decimalToBinary(int n) {

  string res = "";

  while (n > 0) {

    res = to_string(n % 2) + res;

    n /= 2;

  }

  return res;

}

string binaryToOctal(string binary) {

  string res = "";

  int len = binary.length(), i = 0;

  while (i < len) {

    if (i + 3 <= len) {

      int sum = (binary[i] - '0') * 4 + (binary[i + 1] - '0') * 2 + (binary[i + 2] - '0');

      res += to_string(sum);

      i += 3;

    } else {

      int sum = 0;

      while (i < len) {

        sum = sum * 2 + (binary[i] - '0');

        ++i;

      }

      res += to_string(sum);

    }

  }

  return res;

}

int main() {

  int n;

  cout << "Enter a decimal number: ";

  cin >> n;

  string binary = decimalToBinary(n);

  string octal = binaryToOctal(binary);

  cout << n << " in octal system is: " << octal << endl;

  return 0;

}

在上面的代码中,我们首先定义了两个函数decimalToBinary()和binaryToOctal(),用来将10进制数转为二进制数和将二进制数转为8进制数。接着在main()函数中,我们通过cin从用户输入一个10进制数n,并调用上面定义的函数来将其转为8进制数。最后,我们将结果输出到控制台上。

总体来说,利用C++实现10进制转8进制的功能并不难。需要注意的是,我们需要将10进制数转化为二进制数,再按照一定的规则进行分组、转化为对应的8进制数。因此,需要仔细地理解转化的原理,并且写出能够正确地处理边界情况的程序。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复