【笔记】 C++中的进制

进制表示方法

名称 形式
二进制(binary) 0b+内容 / 0B+内容
八进制(octal) 0+内容
十进制(decimal) 内容
十六进制(hexadecimal) 0x+内容 / 0X+内容

下面是试验程序:

#include <iostream>
using namespace std;

int main()
{
    
    
	int a = 20;
	int b = 024;
	int c = 0x14;
	int d = 0X14;
	int e = 0b10100;
	int f = 0B10100;
	int b2 = 0024;
	int c2 = 0x014;
//	int c3 = 00x14; //This is an error.
	int e2 = 0b010100;
	cout << a << " " << b << " " << c << " " << d << " " << e <<
		" " << f << " " << b2 << " " << c2 << " " << e2 << endl;
	return 0;
}

Result:

20 20 20 20 20 20 20 20 20

进制的转换

下面在 Header File Binary.h 中定义了二进制十进制转换函数:
1.binary_to_decimal():二进制→十进制
2.decimal_to_binary():十进制→二进制

#ifndef BINARY_H
#define BINARY_H
#include <cmath>

int binary_to_decimal(unsigned long bin1)
{
    
    
	unsigned long dec1 = 0;
	unsigned long tem1 = bin1;
	unsigned i = 0;
	while (tem1 != 0)
	{
    
    
		dec1 += pow(2, i++) * (tem1 % 10);
		tem1 /= 10;
	}
	return(dec1);
}

int decimal_to_binary(unsigned long dec2)
{
    
    
	unsigned long bin2 = 0;
	unsigned long tem2 = dec2;
	unsigned j = 0;
	while (tem2 != 0)
	{
    
    
		bin2 += pow(10, j++) * (tem2 % 2);
		tem2 /= 2;
	}
	return(bin2);
}
#endif // !BINARY_H

使用例子在中【C++ Primer(5th Edition) Exercise】练习程序 - Chapter4(第四章) Exercise Section 4.8(i.e. Exercise 4.25-27)。
此外注意,次方不是 ^ !!!,这个符号在英文版P154有讲解。

当然,可以类比写出其他进制转换的程序。


See also

Teddy van Jerry 的导航页
【C++ Primer(5th Edition) Exercise】练习程序 - Chapter2(第二章)

猜你喜欢

转载自blog.csdn.net/weixin_50012998/article/details/108169571