课堂笔记
1.整数数制
整数数制包括二进制数、八进制数、十进制数、十六进制数
1.1.十进制数
基数为10,由0到9这十个数构成。例如,4261可以看作是:
(4*1000)+(2*100)+(6*10)+(1*1)=
(4*10^3)+(2*10^2)+(6*10^1)+(1*10^0)=4261
1.2.二进制数
基数为2,由0和1这两个数构成。
★二进制数向十进制数转换
例如:100₂=4₁₀
解析:1 0 0 (二进制数)
2 1 0 (对应位置)
(0*2^0)+(0*2^1)+(1*2^2)=4
二进制----十进制基数为2.
★十进制数向二进制数转换
例如:15₁₀=1111₂
解析:15用短除法一直除2,直到最后为0.
继续二进制的补充(由于计算机中用二进制数表示,在这里多些知识点)
★二进制补码表示
为了让正数负数的表示一致从而有了二进制的补码。
最左边为最高有效位,最右边为最低有效位。
二进制补码中,最高位是符号位:0表示正数,1表示负数。
正数的二进制补码和普通的二进制补码是一样的,负数则不然。
负数补码步骤:
- 写出该负数绝对值的二进制数
- 二进制数取反
- 加1
例如:-2的32位二进制补码表示
00000000000000000000000000000010(-2的绝对值)
1111111111111111111111111111111111101(取反)
+1(加一)
1111111111111111111111111111111111110(-2的二进制补码表示数)
-1的所有位均为1
最大的正值是除符号位是0,其他位都是1。
对n位来说,最大的正值是2^(n-1)-1
最小的负值是2^(n-1)
(上述公式由等比数列求和而得)
例如:n=8时,最大的正值是127最小的负值是-128
1.3.八进制数
基数为8,由0到7这八个数构成。
在C语言中,以0开头的数表示八进制的形式。
★八进制数向十进制数转换
例如:1025₈=533₁₀
解析:(5*8^0)+(2*8^1)+(0*8^2)+(1*8^3)=533
与二进制到十进制类同。
★十进制数向八进制数转换
例如:533₁₀=1025₈
解析:利用短除法除8,一直除到0为止。
与十进制到二进制类同。
★八进制数向二进制数转换
八进制中的每个数字写出对应的3位二进制数再组合。
例如:4261₁₀=0001000010100101₂
解析:1 0 2 4 5 (八进制表示)
001 000 010 100 101 (二进制表示)
★二进制数向八进制数转换
二进制中的每三个分为一组写出对应的数值
将八进制向二进制转换的过程倒过来就是。
1.4.十六进制数
基数为16,数字由0到9构成,字母由A到F构成(大小写均可)
在C语言中,以0x开头的数表示十六进制的形式。
★十六进制数向十进制数转换
例如:10A5₁₆=4261₁₀
解析:(5*16^0)+(10*16^1)+(0*16^2)+(1*16^3)=4261
与二进制到十进制类同。
★二进制数向十六进制数转换
二进制中的每4个分为一组写出对应的数值
例如:0001000010100101₂=10A5₁₆
解析:1 0 A 5 (十六进制表示)
0001 0000 1010 0101 (二进制表示)
★十六进制数向二进制数转换
十六进制中的每个数字写出对应的4位二进制数再组合。
将二进制向十六进制转换的过程倒过来就是。
★十六进制数向八进制数转换
先由十六进制转二进制
再由二进制每三个一组转成八进制
★八进制数向十六进制数转换
与上同理
先由八进制转二进制
再由二进制每四个一组转成十六进制
2.数据类型
2.1.引入
数据类型: 基本类型、构造类型、指针类型、 空类型(void)。
基本类型:整型、实型(浮点型)、字符型(char)、枚举类型(enum)。
整型:基本整型(int)、长整型(long)、短整型(short)、无符号整型(unsigned)
实型(浮点型):单精度实型(float)、多精度实型(double)
构造类型:数组类型、结构体类型(struct)、共用体类型(union)
2.2.类型修饰符
signed和unsigned可以用来修饰long int和short int,但不能修饰double和float。
有符号整型和无符号整型的区别:
无符号:最高位表示数据位
有符号:最高位表示符号位,即为:最高位0表示正数;最高位1表示负数。
当修饰符被单独使用时,则系统默认其为int。
如:signed表示signed int
unsigned表示unsigned int
long表示long int等。
int型数分配2个字节的存储空间,那么对于
有符号整数,由于最高位为符号位,所以最小值为-2¹⁵(-32768);最大为(32767)
无符号整数,由于最高位为数据位,所以最小值为0;最大为2¹⁶-1(62235)