程序中进制的表示
二进制
二进制由 0 和 1 两个数字组成,使用时必须以0b或0B(不区分大小写)开头,例如:
//合法二进制
int a = 0b101; //换算成十进制5
int b = -0b110010; //换算成十进制-50
int c = 0B100001; //换算成十进制33
//不合法的二进制
int m = 101001; //无前缀0b或0B,相当于十进制
int n = 0B401; //4不是有效的二进制数字
请注意,标准的C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字。换句话说,并不是所有的编译器都支持二进制数字,只有一部分编译器支持,并且跟编译器的版本有关系。
下面是实际测试的结果:
- Visual C++ 6.0 不支持。
- Visual Studio 2015 支持,但是 Visual Studio 2010 不支持;可以认为,高版本的 Visual Studio 支持二进制数字,低版本的 Visual Studio 不支持。
- GCC 4.8.2 支持,但是 GCC 3.4.5 不支持;可以认为,高版本的 GCC 支持二进制数字,低版本的 GCC 不支持。
- LLVM/Clang 支持(内嵌于 Mac OS 下的 Xcode 中)。
- window VScode支持
运算法则:逢二进一,借一当二
0B1101 - 0B0011 = 0B1010
0B1101 + 0B0011 = 0B10000
八进制
八进制由 0~7 八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o),例如:
//合法八进制 int a = 0105;
//换算成十进制69 0105 105
int b = -0101; //换算成十进制-65
int c = 017777; //换算成十进制8191
//不合法的八进制
int m = 256; //无前缀0,相当于十进制<