掌握进制的转换和计算方法。
一、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;
}