内存、进制、数据类型(内置类型)

一、内存

一、内存划分

基本单位:字节 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

  • 35
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值