1.gcc编辑器
2.C语言基础
1.进制转换:
二进制、八进制、十进制、十六进制
二进制:逢二进一
0、1
八进制:逢八进一
0、1、2、3、4、5、6、7
十进制:逢十进一
0、1、2、3、4、5、6、7、8、9
十六进制:逢十六进一
0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f
二进制、八进制、十六进制 -> 十进制:
对应位 * 对应位的权值再求和
十进制 -> 二进制、八进制、十六进制:
十进制数除以进制数得到的余数逆序排列
十进制 <-> 二进制
二进制 <-> 八进制、十六进制
八进制的1位 == 二进制的3位
十六进制1位 == 二进制的4位
2.负数在内存中的存储
100 1100100
-100
负数在内存中存储:
1.先获得原码(去掉符号位,数字对应的二进制形式)
2.获得反码 (原码取反)
3.获得补码(反码+1)
4.获得内存中的值(符号位+补码)
3.程序在计算机内部如何运行:
存储器:
1.内存
读写速度快
价格昂贵
掉电数据丢失
2.外存
读写速度慢
价格便宜
掉电数据不丢失
外存存储文件
a.out是存放在外存中的一个文件
./a.out时将该文件加载到内存中运行,内存负责与CPU交互执行代码内的运算处理
4.计算机内存的存储单位:
1 bit
1 byte == 8 bit
1 kb == 1024 byte
1 mb == 1024 kb
1 gb == 1024 mb
1 tb == 1024 gb
整数类型
.
整数类型 | 在内存空间所占字节数 | 存储方式 | 值域范围 |
unsigned short无符号短整型 | 2个字节 | 16位均表示数据位(数据对应的二进制形式) | 0 - 65535 |
short 短整型 | 2个字节 | 1位符号位+15位数据位(补码) | -32768 - 32767 |
unsigned int 无符号整形 | 4个字节 | 32位均表示数据位(数据对应的二进制形式) | 0 - 2^32 -1 |
int 整形 | 4个字节 | 1位符号位+31位数据位(数据的补码) | -2^31 - 2^31 -1 |
unsigned long 无符号长整型 | 8个字节 | 64位均表示数据位(数据对应的二进制形式) | 0 - 2^64 -1 |
long 长整型 | 8个字节 | 1位符号位+63位数据位(数据的补码) | -2^63 - 2^63 -1 |
注: 0000 0000 0000 0000 代表0,
1000 0000 0000 0000 代表-32768,不代表-0,
负数以补码的形式存储在内存中,
-32768 补码:1000 0000 0000 0000
此时1,即做数据为又做符号位
整数类型默认为有符号类型
浮点数类型
所有浮点数类型均为有符号数类型 存储方式
float 单精度浮点数类型(最多表示6到8位有效数字) 占4个字节 1+8+23
double 双精度浮点数类型(最多表示12有效数字) 占8个字节 1+11+52
例:
float类型
8.75 1000.11 1.00011*2^3 必须以1开头,所以可以去掉1变成.000113+127=130 指数都要加上127,因为指数是8位,指数范围是-127到128 ,指数偏移量为127,所以+127为了让负数变成正数存储
四个字节所以一共是32位
符号位1 指数位 8 尾数位23
0 1000 0010(130) 00011 0000 0000 0000 0000 00
浮点数->二进制形式->科学计数法转换->小数点后存入尾数中->指数位+偏移位(float+127 double+1023)以二进制存入指数位
标签:0000,字节,符号,二进制,补码,嵌入式,学习,第二天,数据位 From: https://blog.csdn.net/m0_61965705/article/details/140388740