自学嵌入式第二天(C语言篇——数据类型)
琐碎的敲代码内功。以为很简单 结果全是坑1.C语言提供的数据类型2.整数类型常量在程序运行过程中其值不能被改变的量变量在程序运行过程中其值能被改变的量1整型常量八进制、十进制、十六进制在计算机世界只有二进制那么如何进行进制之间的转换呢十进制转R进制除R取余短除法R进制转十进制加权求和二进制转十六进制四位二进制对应一位十六进制二进制转八进制三位二进制对应一位八进制八进制转十六进制先转为二进制再转为十六进制2整型变量格式数据类型 变量名 表示定义变量注意在定义变量名时最好做到见名知意不能以数字开头不能与关键字重复不要和库函数以及预处理命令重名。变量定义本质就是在内存开空间这个空间的大小就是类型所占字节数。3数据的存储大端模式51单片机、arm芯片小端模式 电脑原则高高低低 高位数据存放在高地址低位数据存放在低地址整数在计算机中如何存储所有整数在计算机中均以补码形式存在。正数原码反码补码负数补码反码1反码原码按位取反符号位不变其余位0变1,1变04类型的大小决定了表示的数据范围sizeof(int) 4 字节sizeof(short) 2 字节sizeof(long) 8 字节sizeof(long long) 8字节下面以short类型为例演示取值范围如何计算unsigned short [0,65535]0000 0000 0000 0000 //最小值 01111 1111 1111 1111 //2^16 -1 65,535signed short [-32767832767]//由于数据在电脑中以补码形式存储所以首先要算出原码 补码再求补码为原码再求补码0|111 1111 1111 1111 //正数的补码为本身2^15-1 327671|000 0000 0000 00001111 1111 1111 1111的反码为1|000 0000 0000 0000补码为1|000 0000 0000 0001其值为-32767符号位0正1负5整数溢出取值范围是循环的所以在溢出时不是0egsigned short a32767aa1此时输出结果为-327683.浮点型1常量 1.23 1.23e32变量sizeof(float) 4sizeof(double) 8sizeof(long double) 163浮点数的存储step1: 将十进制小数转换为二进制形式的小数整数部分 --- 除2取余法小数部分 --- 乘2取整法step2: 将二进制形式的小数 写成 科学计数法形式step3: 按照IEEE754标准如下进行存储float型1位符号位8位指数位23位尾数位指数需要加偏移量127范围128,0尾数位不够的在后面补0double型1位符号位11为指数位52为尾数位指数位需加偏移量10234注意a.小数常量在计算机中默认存储类型为doubleb.整数常量在计算机中默认存储类型为int型c.浮点数比较在比较时要保持精度一致即数据类型一致d.常量也可以指定类型123L //表示long类型123LL //表示 long long类型123UL //表示unsigned long 类型123ULL //表示unsigned long long类型0.9f //表示float型4.字符型1ascii表0~32 不可见字符 (控制字符)48~57 是数字字符 0~9 //字符常量65~90 A~Z97~122 a~z2常量a 字符串常量 中只能放一个字符3变量 sizeofchar1char 也是一种整型 小整型 tiny intunsigned char [0,255]signed char [-128,127]4字符型数据的存储:a ---编码值 ---97 --- 补码值 存放到 内存5转义字符\表示转义转换了含义看着有两个符号但是代表一个字符\n :换行的字符 当前位置移到下一行开头\t 跳到下一个tab的位置一个tab 占 8个字符\b 退格 当前位置移到前一列\r 回车 将当前位置移到本行的开头练习ab*c\t*de\rf\tg\n123答案: fb*c____gde123