整数数据类型
- char
- short
- int
- long
- long long
| 类型名称 | C语言中的关键词 | 注释 |
| 字符型 | char | 用于表示一个很小的整数 |
| 短整型 | short | 用于表示一个不怎么打的整数 |
| 整型 | int | 生活中一般的整数都可以表示 |
| 长整型 | long | 用于表示一个较大的整数 |
| 加长整型 | long long | 用于表示一个非常大的整数 |
为什么要定义不同的整型类型?
- 占用内存大小不一样
- 表示数据范围不一样
计算机是通过晶体管的开关状态来记录数据的,他们通常8个编为一组,我们称为字节,这种表示方法我们称为二进制。因此一个字节,8个晶体管可以拥有2的8次方个不同的状态,一个字节8个晶体管可以表示256个数值。



sizeof用来测量数据
sizeof可以用来测量数据大小,从而来决定如何使用整数类型,翻译成中文是什么东西的大小的意思,用来测量实体占用字节大小。
sizeof不仅可以测量数据类型,同样可以测量变量、常量


计算数值范围
记住sizeof的使用,记住数值范围的结论。晶体管的状态称为位。
- char 1个字节 8位
- short 2个字节 16位
- int 4个字节 32位
- long 4个字节 32位
- long long 8个字节 64位

太多的位数不利于我们理解原理,可以把位数简化成3位,看看3个晶体管,能够表示多大的数值范围?

如果不考虑负数,可表示的数据范围:
假设位数为n,数据范围为0到2的n次方-1
负数怎么表示呢?
拿出一位作为符号位,符号位表示正数或负数。



补码表示法
3位2进制可以表示8个不同的数值,因此8为模
要让3回到0,可以让3-3,也可以让3 +(模 – 3)的差
3 ➡️ 0
3-3 3 +(模 – 3)
3 + (8 – 3)
3 + 5
因此-3的二进制用5的二进制101表示
用加法等效减法的二进制表示法称为补码表示法。
正数的补码就是其二进制本身
负数的补码:(模-正数)的二进制
2(求-2)
010 遇到1以前的数全部填0,1填1 遇到1之后的全部取反
100 (求-100)
0 1 1 0 0 1 0 0 1 0 0 1 1 1 0 0

补码表示法
通过最高位,区别了正数和负数
巧妙应用溢出,计算得到正确的结果
计算机只需要设计加法电路,简化了复杂程度。
整型数值范围结论

不想要最高位当作符号位
unsigned关键词用来表明最高位是不带有符号位的

总结:
- 如何测量
- 数据类型大小
- 如何计算
- 类型取值范围
