1.计算机数据表示形式
1.1数值型数据
十进制、二进制、八进制、十六进制
1.1.1 十进制转二进制
1.短除法:将十进制数对2进行取余运算,得出的余数倒序,就是十进制的二进制表达。
例如:14转化为二进制,14/2=7...0 7/2=3...1 3/2=1...1 1/2=0...1
我们能看到余数是0、1、1、1,倒序为1110,1110就是14的二进制表达。
2.8421凑数法:四位二进制数据,从左往右每一位数字代表的最大值分别为8、4、2、1。通过将十进制数拆分,在转化为二进制。
例如:还是用14举例,先从最大的数字8入手,慢慢往下减,14-8=6,6-4=2,2-2=0
所以14可以分为8+4+2+0;
8 4 2 0
1 1 1 0
所以,14的二进制表达式为1110;
3.电脑自带计算器,什么时代了,还在( )。
在计算器中打开程序员模式,其中BIN代表二进制,OCT为八进制,DEC为十进制,HEX为十六进制。
1.1.2 二进制转八进制、十六进制
这个就比较简单了
三位二进制对应一位八进制
比如 100101, 从右往左数,以三个为一组,分完之后为 100 和 101,他们转换的数值为4和5,那么八进制就为45
四位二进制对应一位十六进制,这个和上面原理一样,感兴趣可以自己动手算一算。
1.2非数值型数据
通过man手册我们可以看到许多非数值型数据,其中ASCII码是非常重要的,通过它我们能够知道一些字符的十进制数,这对于字符与整形之间的转换很有帮助。
我截取了一部分ASCII码表,其中最为常见的是 ' \0 ' , ' \n ' , 数字0-9,字母a-z 以及大写A-Z。
2.词法符号
2.1关键字
- 存储类型:auto,static,exterm,register
-
数据类型 : char,int,float,short,long,double,signed,unsigned
-
分支: if , else , switch , case , default , for,do while , go to ,break , continue
-
其他: void , const ,sizeof ,volatile , return , typedef
-
构造数据类型: struct,enum,union
2.2标识符
-
由数字 , 字符 , 下划线 , 括号组成
-
不能和关键字重合
-
开头不能用数字
2.3运算符
2.3.1 算术运算符
+ - * / % ++ --
整数相除,向下取整
%取余,只能用于整数运算
2.3.2 逻辑运算符
-
& 位与 : 全一则一 , 有零则零
-
| 位或 : 有一则一 , 全零则零
-
^ 异或 : 相同为零 , 不同为一
截断法则 :
- 逻辑与运算中,前边表达式为假,后边表达式不再执行,直接返回假
- 逻辑或运算中,前边表达式为真,后边表达式不再执行,直接返回真
2.3.3 位运算
& | ^ ~ << >> 与 或 异或 取反 左移 右移
- &位与:全一则一,有零则零
- |位或:有一则一,全零则零
- ^异或:相同为零,不同为一
原码 | 反码 | 补码 | |
正数 | 相同 | 相同 | 相同 |
负数 | 相同 |
除符号位全部取反
| 反码加1 |
int 4个字节 32位 最左边时符号位,0是正数,1是负数
运算时,全部用的补码
置一公式:a|(1<<n)
置零公式:a&(~(1<<n))
2.3.4 关系运算符
( > >= < <= == != )
2.3.5 三目运算符 条件运算符
表达式1? 表达式2:表达式3
运算顺序:如果表达式1为真,则执行表达式2,反之则执行表达式3
2.3.6 赋值运算符
= += -= *= /= %=
2.3.7 运算符优先级
单算移关与,异或逻条赋
加油努力学习吧!