佛山市建网站做网站费用,平面设计需要什么基础,seo推广公司招商,国外最大的素材网站目录
1.数据类型介绍
1.1类型分类
2.整形在内存中的存储
2.1原码#xff0c;反码#xff0c;补码
2.2大小端介绍
2.3练习
3.浮点型在内存中的存储
3.1浮点数存储规则 引入#xff1a;
有正负的数据可以存放在有符号的变量中
只有正数的数据可以存放在无符号的变量…目录
1.数据类型介绍
1.1类型分类
2.整形在内存中的存储
2.1原码反码补码
2.2大小端介绍
2.3练习
3.浮点型在内存中的存储
3.1浮点数存储规则 引入
有正负的数据可以存放在有符号的变量中
只有正数的数据可以存放在无符号的变量中
如果是有符号的数据最高位是符号位最高位是0表示正数最高位是1表示负数
对于无符号数来说最高位也是数据位
1.数据类型介绍 char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double //双精度浮点数 类型的意义
1.使用这个类型开辟内存空间的大小大小决定了使用范围
2.如何看待内存空间的视角
1.1类型分类
整形家族 char unsigned char signed char short unsigned short signed char int unsigned int signed int long unsigned long signed long 其中若定义
char c //不能确定char是否有符号往往取决于编译器
char在内存中只占用一个字节一个字节占8个比特位取值范围是-128~127
浮点数家族 float double long double 构造类型 数组类型 eg:int arr[10];//arr的类型是int[10] 结构体类型 struct 枚举类型 enum 联合类型 union 指针类型 int *pi; char *pc; float* pf; void* pv; 指针变量是用来存放地址的
空类型 void 表示空类型无类型 通常应用于函数的返回类型函数的参数指针类型 2.整形在内存中的存储
2.1原码反码补码
整数有此三种表现方法均有符号位和数值位符号位0为正1为负。
如何表示负整数 原码直接将数值按照正负数的形式翻译成二进制 反码符号位不变其他位按位取反 补码反码1即得到补码 正数的原反补码相同
int main()
{int a 10;//正数的原反补码都一样//0000 0000 0000 0000 0000 0000 0000 1010int b -10;//1000 0000 0000 0000 0000 0000 0000 1010//1111 1111 1111 1111 1111 1111 1111 0101//1111 1111 1111 1111 1111 1111 1111 0110return 0;
}
对于整形来说数据存放内存中其实存放的是补码为何
使用补码可以将符号位和数值域统一处理同时加法和减法也可以统一处理CPU只有加法器此外补码与原码相互转换其运算过程是相同的不需要额外的硬件电路。 2.2大小端介绍
什么是大小端
大端存储模式是指数据的低位保存在内存的高地址中数据的高位保存在内存的低地址中
小端存储模式是指数据的低位保存在内存的低地址中数据的高位保存在内存的高地址中 判断大小端
#include stdio.h
int check_sys()
{int i 1;return (*(char *)i);
}
int main()
{int ret check_sys();if(ret 1){printf(小端\n);}else{printf(大端\n);}return 0;
}
2.3练习
#include stdio.h
int main()
{char a -1;signed char b -1;unsigned char c -1;printf(a%d,b%d,c%d, a, b, c);//-1 -1 255return 0;
}
无符号char类型打印整形会发生整形提升
如何进行整形提升 1.查看所要整形提升的变量原类型是什么 2.若是无符号类型高位补0直到32位即可 若是有符号类型看最高位符号位是什么是0补0是1补1 上题为例unsigned char c -1;//是无符号数char类型输出为整形时需要发生整形提升
补码1111 1111
发生整形提升原类型是无符号类型
0000 0000 0000 0000 0000 0000 1111 1111
二进制转十进制---255
3.浮点型在内存中的存储
3.1浮点数存储规则
根据IEEE754规定任意一个二进制浮点数V可以表示为 (-1)^S * M * 2^E (-1)^s表示符号位当s0V为正数当s1V为负数。 M表示有效数字大于等于1小于2。 2^E表示指数位。 对于32位的浮点数最高位是符号位s接着的8位是指数E,剩下的23位为有效数字M IEEE754对有效数字M和指数E,还有一些特别的规定
1M2时M写成1.xxx的形其中xxx表示小数部分而第一位“1”可以省去
指数E:Ee127
eg:
真值0.5
二进制0.1
---- (-1)^0 * 1.0*2^(-1) 其阶码E-1127126----0111 1110
则其二进制表示形式0 0111 1110 0000 0000 0000 000 s E M
E全为0
这时浮点数的指数E等于1-127或者1-1023即为真实值 有效数字M不再加上第一位的1而是还原为0.xxxxxx的小数。这样做是为了表示±0以及接近于0的很小的数字。
E全为1 这时如果有效数字M全为0表示±无穷大正负取决于符号位s