目录
不同类型的数据-----机器指令不同--导致最终使用硬件的部件不同
#if 0
#endif (用中间的一段代码,就写1不用就写0)
基本的数据类型:
1,整型: int,short ,long ,long long 大小不一
浮点型:
字符型:
2,在程序运行的过程中值能被改变的量叫变量,不能被改变的量叫常量。
进制转换
十进制转二进制
上面的是地位,下面的是高位
二进制转十进制
加权求和或 BCD码
比如1010对应2*3,2*2,2*1,2*0
8421
1010
只有二位和四位有一所以十进制数值为相加为10
十六进制转二级制
一位十六进制数等于四位二进制数
相互换还是用上面两种方法
八进制转二级制
一位八进制数等于三位二进制数
相互换还是用上面两种方法
语法
int a =10;//这是初始化,开空间的同时给了一个值
int a;
a =10;//这是赋值,先开空间,再给十
数据存储
大端存储,
小端存储 :高高低低 高位数据存高地址,低位数据存低地址
负数存储:补码存储
例如:int a =-123;
在存储中数据的最高位 充当符号位
0为正,1为负数
符号位|----数值位
0|000 0000 0000 0000 0000 0000 0111 1011 //+123
1|000 0000 0000 0000 0000 0000 0111 1011 //-123
补码:
源码:两次补码也是原码
1|000 0000 0000 0000 0000 0000 0111 1011 //-123
反码:符号位不变,其余位按位取反
1|111 1111 1111 1111 1111 1111 1000 0100 //-123
补码:反码+1
1|111 1111 1111 1111 1111 1111 1000 0101 //-123
f f f f f f 8 5
按照小端储存,所以-123在计算机中储存为85ffffff
signed(有符号位):有一位为符号位(包含正数和负数)
signed int
0000 0000 0000 0000 0000 0000 0000 0000//最小值
1111 1111 1111 1111 1111 1111 1111 1111 //最大值
unsigned(无符号位):不包含符号位(包含非负数)
unsigned int
正数
0|000 0000 0000 0000 0000 0000 0000 0000 //最小值
0|111 1111 1111 1111 1111 1111 1111 1111 //最大值
负数(这里的十六进制都是编译器中存入的数字属于补码,要求出具体值需要算出源码)
1|000 0000 0000 0000 0000 0000 0000 0000// 最小值(这个符号位的1即是符号位,也是数值位)
1|111 1111 1111 1111 1111 1111 1111 1111 //最大值(-1)
结论
整数在计算机中存储的都是补码形式
正数:原码,反码,补码都是一样的;
负数:如上的求法;
整型溢出:当数值大于存储数据的最大值时,再增加数值就会变为最小值,反之最小再减一也会溢出
例如:1111 1111 1111 1111的最大字符 再加一就会变为 1 0000 0000 0000 0000不能存储1全是0