一、内存
一、内存划分
基本单位:字节 byte 最小单位:比特位bit
转换:1字节=8位 1byte=8bit
1KB=1024bit 1MB=1024KB 1GB=1024MB 1TB=1024GB
起点0x0000 0000 终点 0xffff ffff
二、Debug,Release,x86-------win32 ,x64------win64
Debug 调试版本 Release发布版本
x86-------win32 x64------win64 (一般选择Debug,x86)
eg:8G+128G ,12G+256G; 运行内存越大代表运行速度越快
x86----win32 :内存是4GB,---->换算方法:32代表地址总线的根数,例如两根地址总线有2^2=4个数值00,01,10,11;而32根代表2^32种数值即字节,此时用单位换算除1024换算成GB,结果就是4GB。
二、进制
一、常用:
1.二进制(前缀0b,代表二进制,eg:int val=0b100,代表存储val值为4)
权值:2 取值:0、1
2.八进制(前缀0,代表八进制,eg:int val=0144,代表存储val值为100)
权值:8 取值:0-7
3.十进制
权值:10 取值:0-9
4.十六进制(前缀0x,代表十六进制)
权值:10 取值:0-9、A、B、C、D、E、F
二、正负数
1.正数:原码=补码
2.负数:原码、反码、补码-------> 原码除符号位,所有位都取反得到反码,然后加一得到补码;而从补码得到原码时,先判断正负,若是负数,依然是“取反加一”
三、转换
1.十进制------>二进制、八进制、十六进制
①辗转相除法
除以对应进制的权值,例如转二进制则除2,转八进制则除8
②分解法(转二进制)
例:100=64+32+4 = 2^6+2^5+2^2 = 0110 0100除了倒数第七个、倒数第六个、倒数第三个是1,其余用0填充
123=64+32+16+8+2+1 = 2^6+2^5+2^4+2^3+2^1+2^0 = 0111 1011
③负数的二进制,则通过原码转化反码,再加一得到补码
例:-12 原码1000 1100 -----> 反码1111 0011 ------> 补码1111 0100
转化为十进制时,仍然是“取反加一”
2.二进制、八进制、十六进制------>十进制
把二进制数、八进制数、十六进制数按权值展开,然后相加得到十进制
例如:0144是八进制---->= 4×8^0 + 4×8^1 + 1×8^2 + 0×8^3 =100
3.二进制------>八进制
3位二进制数按权展开相加得到一位八进制数,从右到左开始转换,不足时补0
例如:01 111 100 110 100 ------> 1 7 4 6 4 -------> 017464
4.二进制------>十六进制
4位二进制数按权展开相加得到一位十六进制数,从右到左开始转换,不足时补0
例如:1010 0101 0000 1011 1111 ----> a 5 0 b f ------> 0xa50bf
5.八进制------>二进制 十六进制------>二进制
八进制(十六进制)通过除2取余法,得到二进制数,对每个八进制(十六进制)为3个(4个)二进制,不足时在最左边补零。即二进制转八进制和十六进制的倒回去
6.八进制------>十六进制
将八进制转换为二进制,然后再转换为十六进制,小数点位不变
7.十六进制------>八进制
将十六进制转换为二进制,然后再转换为八进制,小数点位不变
三、数据类型
1.内置类型(基本数据类型)
(1)整型
short(2个字节)
int(4个字节)
long(4个字节)
long long(8个字节),设计电话号码应该用long long
注:int val1 = -1;//有符号
unsigned int val2 =-1;//无符号
有符号和无符号的区别:当数据容量是201个时,有符号的取值范围是【-100—100】,无符号的取值范围是【0—200】
注:大数相加:两个非常大的整型用加法运算,long long类型用不了
1)取值范围 2)类型转换
以1个字节为例,推算 整型 的取值范围
有符号:0111 1111:127:2^7-1
1000 0000:-128 : -2^7
无符号:unsigned 取值范围是【0—255】
(2)浮点型(小数)
①低精度 float(4个字节)
②高进度 double(8个字节)
float val =1.1;//有时会有警告
float val =1.1f;//或者改为1.1F
double val =2.0;//正确,double型定义不需加标识
注 :如何比较浮点型的数值:
利用fabs(取小数的绝对值,整数是abs,用头文件#include <math.h>): fabs(val-n),n是自定义的精度。例:val是否等于2.2:
(3)字符型
char(1个字节)
(4)布尔型(c++):bool
bool(1个字节),true/false (1true,0false,java里bool类型和整型不可以和0、1转换)
2.数组类型
3.指针类型
4.用户自定义设计数据类型
①结构体类型struct
②联合体类型union
③枚举类型enum