各类进制的概述
###### 1.进制的概述
-
二进制
0、1 以0b开头 bitset<8>输出
-
八进制
0~7 以0开头 0123 oct输出
-
十进制
0~9 cout默认输出十进制
-
十六进制
0~9 a~f 以0x开头 0x12 hex输出 不区分正负数
-
n进制
0~n-1
2.原码、反码、补码
-
计算机存储的是数据的补码
-
原码:计算机中对数字的二进制定点表示方法
123的原码:0111 1011
-
无符号数:
补码 == 反码 == 原码
123原码:0111 1011
123反码:0111 1011
123补码:0111 1011
-
有符号正数
补码 == 反码 == 原码
+123原码:0111 1011
+123反码:0111 1011
+123补码:0111 1011
-
有符号负数
原码
反码 == 原码符号位不变,其它位 按位取反
补码 == 反码+1
-123原码: 1111 1011
-123反码: 1000 0100
-123补码: 1000 0101
-
对数据的存:非负数在计算机中以原码的方式存储,负数以补码的方式存储
-
对数据的取:无符号变量:输出内存中原样数据
有符号数据:系统回去看内存的最高位,如果最高位为 0表明正数,内存原样输出。最高位为1表明负数,将内存的数据求补码,得到原码输出。
3.补码的意义
-
统一了0的编码
+0的原码:0000 0000 -0的补码:0000 0000 -0原码:1000 0000 -0反码:1111 1111 -0补码:10000 0000 二进制只有八位所以去掉1得: -0补码:0000 0000
4.const关键字
const 修饰的变量为 只读变量:初始化后,不能被修改
// 以常量初始化const修饰的变量,会事先存放在 “符号常量表” 中
// data再被取地址时,系统才会为其开辟控件。
const int data = 100;
int* p = (int*) &data;
*p = 200;
cout << data << endl; // 100
cout << *p << endl; // 200
// 以变量初始化const修饰的变量,那么不会存储在符号常量表,会立即开辟空间存储
int a = 100;
const int data = a;
int* p = (int*)&data;
*p = 200;
cout << data << endl; // 200
cout << *p << endl; // 200
作者:王韩六六
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.