C++中进制的转换

阅读量: 160 编辑

掌握进制的转换和计算方法。

一、C++中常见进制的表示法

1、十进制(Decimal)

这是我们平常使用的数字系统,使用0到9这10个数字表示数值。

例如:0、1、2、3、4、5、6、7、8、9。没有前缀或后缀,直接使用数字表示。

2、二进制(Binary)

这是由0和1组成的数字系统。

每个二进制位(bit)只能表示0或1。二进制数的每个位代表一个权值,从右到左依次是2的0次方、2的1次方、2的2次方,依此类推。

例如:0b1010表示十进制数10,其中0b表示二进制数的前缀。

3、十六进制(Hexadecimal)

这是由0到9以及字母A到F组成的数字系统。

每个十六进制位可以表示0到15之间的数值。十六进制数的每个位代表一个权值,从右到左依次是16的0次方、16的1次方、16的2次方,依此类推。

例如:0xA表示十进制数10,其中0x表示十六进制的前缀。

A-10,B-11,C-12,D-13,E-14,F-15

或者(大小写一样)

a-10,b-11,c-12,d-13,e-14,f-15

4、还有一个8进制(Octal)

是由于0到7组成的数字系统,规律和上面的进制表示法类似。

在计算机中,通常用B表示二进制、O表示八进制、D表示十进制、H表示十六进制。

二、代码案例

int main() {
    int d = 231;     	// 十进制数
	int b = 0b101; 		// 二进制数	0b 开头
	int o = 0753;		// 八进制 0 开头
	int h = 0xd5c;  	// 十六进制数 0x 开头
	
	//都会转换成10进制输出 
    cout << "十进制数: " << d << endl;
    cout << "二进制数: " << b << endl;
    cout << "八进制数: " << o << endl;
    cout << "十六进制数: " << h << endl;
	
    return 0;
} 

虽然在输出时显示的都是十进制数值,但是计算机会将数值转换为二进制进行处理,只是我们看不到而已。

三、进制转换

同学们要掌握十进制数、二进制数和十六进制数之间的转换。

比如给你一个十进制的数字27,它对应的二进制是多少?它对应的十六进制是多少?

27的二进制是:11011   (1*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0)
27的十六进制是:1b    (1*16^1 + 11*16^0)
    
2的n次方
2^0-1,2^1-2,2^2-4,2^3-8,2^4-16,2^5-32,2^6-64,2^7-128,2^8-258,2^9-512,2^10-1024 

如果给你的是二进制的数字,转换为十六进制呢?一般我们先转换为十进制,再做相应的转换。

#include <iostream>
#include <bitset>
using namespace std;

int main(){
	int d = 27;
	
	cout << "27的10进制" << std::dec << d << endl;
	
	cout << "27的2进制: " << bitset<8>(d) << endl; //<8>:表示保留8位输出
	
	cout << "27的16进制:" << std::hex << d << endl;
	
	cout << "27的8进制:" << std::oct << d << endl;
	
	return 0;
}
爱码岛编程公众号
微信扫码关注
爱码岛编程小程序
微信扫码打开
苏ICP备13052010号
©2023 南京匠成信息科技有限公司