1. 计算机需要处理数据
2.数据需要保存在存储器上
3. 计算机只能识别0或者1的二进制数据
4.我们看到的,用到的所有数据在计算机中都是以二进制存储的
5.内存中的相同的01二进制数据,以不同的编码,可以有不同的展现形式
6. 十进制整数与二进制、八进制、十六进制相互转换
十进制转其他进制,取余法
二进制转八进制,每三位二进制转换为一位八进制
二进制转十六进制,每四位二进制转为一位十六进制
7. 原码、反码和补码的表示形式
在计算机中,数值以补码的形式存储的
正数的原码、反码、补码都一样,
负数的原码,最高位是符号位,其他位是数据位
负数的反码,符号位不变,其他位依次取反
负数的补码,是反码加1
8. 变量的定义
定义一个变量,需要告诉计算机,该变量的类型、变量名,可以同时告诉计算机该变量的初始值是多少。
变量的类型,决定了变量的存储方式,变量的长度(变量的取值范围),变量所能进行的操作
无符号整数,最高位就是数值位,
有符号整数,最高位就是符号位,
变量名来标识这块存储空间,用户通过变量名来访问这个变量
给变量赋值,实际上就是把这个值放到变量名所标识的存储空间中
int a = 5;
9.整型变量
short / int / long / long long这几种类型,这是有符号的类型
可以用unsigned来修饰这几种类型,变成无符号的数据类型,即第一位是数值位,而不是符号位
short -32768~32767
unsigned short 0~65535
需要特别注意的是,在计算机中,不看你怎么存,只看你怎么读,如:
unsigned short b1 ; //系统会在内存中给b1变量开辟两个字节的存储空间
b1 = -10; //把-10存储到b1 这块存储空间中
// -10补码 , 原码:1000 0000 0000 1010
// 反码:1111 1111 1111 0101
// 补码:1111 1111 1111 0110
所以,在b1变量中存储的 内容 就是 1111 1111 1111 0110
//在计算机中,不看你怎么存,只看你怎么读
因为,b1的数据类型是unsigned short, 如果把b1中的内容按%d的形式输出的话,原来最高位1就不再是符号位,而是数值位了,所以把1111 1111 1111 0110转换为十进制数就是 65526
printf("%d ", b1); // 65526
printf("%x ", b1);
short b2 = b1; //如果定义一个有符号的变量b2,把b1变量中的值,即 1111 1111 1111 0110赋值给b2后, 这一串二进制的最高位1,又变成符号位了,表示负数, 1111 1111 1111 0110的补码转换为十进制就是-10
printf("%d ", b2); //-10