21xrx.com
2024-12-22 22:40:15 Sunday
登录
文章检索 我的文章 写文章
C++中的进制转换方法及注意事项
2023-06-30 01:23:37 深夜i     --     --
C++ 进制转换 方法 注意事项

在C++编程中,数据类型通常采用10进制表示。但是在实际应用中,可能需要使用其他进制的数据,如2进制、8进制或16进制。因此,进制转换成为了C++编程中必备的一项技能。本文将为大家介绍C++中的进制转换方法及需要注意的事项。

1. 10进制转其他进制

(1)2进制 - 可以使用位运算符(&、|、^、<<、>>)或数学计算方法,但最常用的方法是除2取余法。

int num = 10;

string res = "";

while(num){

  res = to_string(num % 2) + res;

  num /= 2;

}

cout << res;

(2)8进制 - 可以使用位运算符(&、|、^、<<、>>)或数学计算方法,但最常用的方法还是除8取余法。

int num = 10;

string res = "";

while(num){

  res = to_string(num % 8) + res;

  num /= 8;

}

cout << res;

(3)16进制 - 可以使用位运算符(&、|、^、<<、>>)或数学计算方法,但最常用的方法是除16取余法。

int num = 10;

string res = "";

while(num){

  int temp = num % 16;

  if(temp <= 9)

    res = to_string(temp) + res;

  else

    res = char(temp - 10 + 'A') + res;

    num /= 16;

}

cout << res;

2. 其他进制转10进制

(1)2进制 - 可以直接按照权重计算,从右往左读入每一位数值,乘以对应权重,最后求和。

string num = "1010";

int res = 0, weight = 1;

for(int i = num.size() - 1; i >= 0; --i){

  res += (num[i] - '0') * weight;

  weight <<= 1;

}

cout << res;

(2)8进制 - 将8进制数转为10进制数,也是按照权重计算,在上述基础上权重从右到左每次乘以8即可。

string num = "12";

int res = 0, weight = 1;

for(int i = num.size() - 1; i >= 0; --i){

  res += (num[i] - '0') * weight;

  weight <<= 3;

}

cout << res;

(3)16进制 - 将16进制数转为10进制数,也是按照权重计算,在上述基础上权重从右到左每次乘以16即可。

string num = "A";

int res = 0, weight = 1;

for(int i = num.size() - 1; i >= 0; --i){

  if(num[i] >= '0' && num[i] <= '9')

    res += (num[i] - '0') * weight;

  else if(num[i] >= 'A' && num[i] <= 'F')

    res += (num[i] - 'A' + 10) * weight;

  weight <<= 4;

}

cout << res;

注意事项:

1. 转换过程中需要注意数据类型,如2进制转10进制时需要使用int类型,但如果超出了int的范围,需要使用long long类型。

2. 在转换16进制时,需要将10-15映射为A-F,以便统一计算。

3. 在进行进制转换时,需要注意位数,确保转换后的数是正确的。如在2进制转10进制时,要注意计算时权重需要从右到左逐步递增。

总之,掌握C++中的进制转换方法,有助于我们在处理数据时更加灵活、高效地运用代码,提高编程效率。

  
  

评论区

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