C++输出不同进制的数字

#include <iostream>
#include <iomanip>

//using std::cout;
using namespace std;
int main()
{
      cout << hex << 14 << '\n'
              << oct << 14 << '\n'
              << dec << 14 << '\n';
}



这种方法不能对二进制进行输出

### C++不同进制数字编码的方法 #### 一、二进制到十进制的转换 对于给定的一个字符串形式表示的二进制数,可以逐位解析并计算其对应的十进制数值。通过遍历该串中的每一位字符(假设只含有'0'和'1'),依据位置权重累加求得最终结果。 ```cpp #include<bits/stdc++.h> using namespace std; int main(){ string a; cin>>a; // 输入二进制数 int ans=0, jz=1, len=a.length(); for(int i=len-1 ;i>=0 ;i--){ ans += (a[i]-'0')*jz; jz *= 2; } cout<<ans; // 输出转换后的十进制数 return 0; } ``` 此段程序展示了从右向左读取每位上的值,并乘以其相应的权值(即$2^{n}$),其中$n$代表当前位距离最右边的位置索引[^1]。 #### 二、十六进制至十进制转变 当涉及到更复杂的基数比如十六进制时,则需考虑字母A-F所代表的具体数值范围(10-15)。同样地,可以通过循环迭代来实现这一过程: ```cpp #include <iostream> #include <cmath> using namespace std; int hex_to_dec(string n){ int dec_value = 0; int base = 1; int temp = n.size(); for (int i=temp-1; i >= 0; --i){ if(n[i]>='0'&&n[i]<='9'){ dec_value+=base*(n[i]-'0'); }else{ dec_value+=base*(toupper(n[i])-'A'+10); } base = base * 16; } return dec_value; } int main(){ string num; cin >> num; cout << "Decimal equivalent of "<<num<<" is : " <<hex_to_dec(num); return 0; } ``` 上述函数`hex_to_dec()`接收一个由‘0’~‘F’组成的字符串作为参数,返回对应于这个字符串表达式的整型变量,它实现了将任意长度的有效十六进制字符串转化为等价的十进制整数的功能。 #### 三、按位操作符的应用场景 除了直接进行进制间的相互变换外,在某些情况下还可以利用C++提供的按位运算符来进行更加高效的操作。例如,要获取某个整数$x$在二进制下的某一位的状态,可以直接使用$(x\ \&\ 1)$;而如果想要反转整个序列,则可借助~x完成[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值