博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(二十七)整型字面值(常量)——多种进制
阅读量:6814 次
发布时间:2019-06-26

本文共 2041 字,大约阅读时间需要 6 分钟。

整型字面值(常量)是显式书写的常量,如1234。——(我真没看懂这个定义)

C和C++都能以三种不同的计数方式来书写整数。他们基数不同,用前一或两位来标识数字常量的基数。(或者说是进制?)

①十进制:基数为10。 第一位是1~9。例如11他就是十进制的11;

②八进制:基数为8(逢8进一)。第一位是0,例如033,是十进制的27;

③十六进制:基数是16(逢16进一)。第一位是0X或者0x,例如0X11,是十进制的17(1*16+1)。

例如:

#include 
using namespace std;int main(){ int a = 111; int b = 0111; //b为八进制的0111 int c = 0x111; //c为十六进制的0x111 cout << "a= " << a << endl; //显示a的结果 cout << "b= " << b << endl; //显示b的结果(注:转为十进制显示) cout << "c= " << c << endl; //显示c的结果(注:转为十进制显示) system("pause"); return 0;}

其输出为:

a= 123b= 83c= 291

具体计算为:

a=123没什么好说的;

b=1*64+2*8+3*1=73;//第一位数字1要乘以8的二次方,第二位数字2乘以8的一次方,第三位数字3乘以8的0次方(即1)。如果是四位,则第一位要乘以8的三次方(512)

c=1*256+2*16+3*1=273; //第一位数字1要乘以16的二次方,第二位数字2乘以16的一次方,第三位数字3乘以16的0次方(即1)。

 

即八进制和十六进制在计算的时候,其换算成十进制的方法是从右往左数每一个数字,分别乘以8(或16)的x-1次方(x为从右往左的位数,第一位x=1,第二位x=2),然后相加求和则为十进制

 

PS:

(1)无论是显示的或者输入的数字是八进制十进制十六进制,反正在内存里都以二进制来存储(0和1),所以并不会省内存。

(2)无论是哪个进制,程序都一样能读懂,所以没必要在程序非要把十六进制的转为十进制来看或者输入(程序能看懂就ok了)。

(3)如果以十六进制或者八进制来显示值的话,可以用cout的一些特殊特性。在头文件iostream里面,提供了控制符endl用于重起一行。还提供了dec,hex,oct分别用于指示cout以十进制(dec)、八进制(oct)和十六进制(hex)来显示整数。如代码:

#include 
using namespace std;int main(){ int a = 123; int b = 0123; //b为八进制的0123 int c = 0x123; //c为十六进制的0x123 cout << "a= " << a << endl; //显示a的结果 cout << "b= " << b << endl; //显示b的结果(注:转为十进制显示) cout << "c= " << c << endl; //显示c的结果(注:转为十进制显示) cout << endl; cout << hex; //告诉程序你应该以十六进制(hex)方式显示整数 cout << "a= " << a << " ←这里以十六进制的方式显示a" << endl; //显示a的结果(注:转为十六进制显示) cout << oct; //告诉程序你应该以八进制(oct)的方式显示整数 cout << "a= " << a << " ←这里以八进制的方式显示a" << endl; //显示c的结果(注:转为十进制显示) cout << dec; //告诉程序你应该以十进制(dec)的方式显示整数 cout << "a= " << a << " ←这里以十进制的方式显示a" << endl; //显示a的结果 system("pause"); return 0;}

输出结果为:

a= 123b= 83c= 291a= 7b ←这里以十六进制的方式显示aa= 173 ←这里以八进制的方式显示aa= 123 ←这里以十进制的方式显示a请按任意键继续. . .

注意:

①八进制那里的显示,前面没有0。但是输入的时候要加0,不然程序以为你输入的是十进制。同样,十六进制前面,也没有0x。至于如何让他以有的方式来显示,(我还不知道……)

②cout<<hex; 并不会显示任何东西,只是单纯的告诉编译器,以什么方式显示数字。另外,因为标识符hex存在于命名空间std中,因此,变量名不能用hex,除非你不用using namespace std; 这行命令。另外,也只有用了这行命令,你才能简写hex,dec,oct。否则你就要用std::hex , std::dec , std::oct 等。

 

 

转载地址:http://gxkzl.baihongyu.com/

你可能感兴趣的文章
kvm.virsh常用命令篇
查看>>
[Hive]Hive使用指南四 客户端导入数据
查看>>
10.JUC线程高级-线程八锁
查看>>
Apache Flink轻量级异步快照机制源码分析
查看>>
PostgreSQL 11 preview - 分区表 增强 汇总
查看>>
MediaCodec在Android视频硬解码组件的应用
查看>>
用JAVA自己画一张二维码
查看>>
Flutter Engine线程管理与Dart Isolate机制
查看>>
美国泛达公司:下一代数据中心的光缆布线系统
查看>>
以太坊(ethereum)技术开发相关资料
查看>>
Pandas数据排序
查看>>
gulp常用插件
查看>>
2018 前端趋势:更一致,更简单
查看>>
SQL物化视图 自动更新 定时刷新
查看>>
express框架应用接入阿里云函数计算
查看>>
几行代码实现ofo首页小黄人眼睛加速感应转动
查看>>
317TABLE ACCESS BY INDEX ROWID BATCHED3
查看>>
MapReduce Shuffle原理 与 Spark Shuffle原理
查看>>
题解 P3386 【【模板】二分图匹配】
查看>>
李彦宏:人工智能的互联网时代已经到来
查看>>