作业分析讲解
=======================
1. 进制之间的转换规则
二进制--》八进制
二进制--》十六进制
每三个二进制为一组换算成对应的八进制即可
每四个二进制为一组换算成对应的十六进制即可
八进制取值范围:0---7 最大的数字7换成二进制111
十六进制取值范围:0---F 最大的数字15换成二进制1111
八进制--》二进制
每个八进制位换算成三个二进制即可
八进制 071 ---》 7 --》二进制111
1 --》二进制001 //不够三位的补零对齐
071--》二进制111 001
十六进制--》二进制
每个十六进制位换算成四个二进制即可
十六进制 0A3---》 A --》二进制1010
3 --》二进制0011 //不够四位的补零对齐
0A3--》二进制1010 0011
八进制--》十六进制
思路:先把八进制转成2进制,然后再把2进制转成16进制即可
八进制 0745 --》二进制111 100 101 --》16进制0001 1110 0101
1 E 5
C语言代码编写规范
====================
第一个:注意缩进
用tab键缩进对齐
第二个:适当的空行
第三个:注释,简明扼要
C语言注释只有两种写法:
第一种:单行注释 //注释文字
第二种:块注释 /* 注释的内容 */,块注释不能嵌套
尤其是重要的核心代码必须写注释
第四个:命名,通俗易懂,英文,千万不要用拼音
创建linux和window的共享
==========================
进入共享: cd /mnt//hgfs/xxxx xxxx是你自己刚才新建的共享文件夹的名字
C语言中的运算符
=====================
算术运算符 + - * / % (取余)
关系运算符 > < == != >= <=
逻辑运算符 ||逻辑或 &&逻辑与 !逻辑非
指针运算 * &
三目运算符 ?:
求数据类型大小,变量大小 sizeof
位运算 & | ~ ^
组合运算 += -= *= \= &= |=
移位运算 >> <<
自增自减 ++ --
(1) 除法
情况一:
两个整数相除,结果取整,而且不会四舍五入
情况二:
除法运算中有一个是小数
1/2 --》结果不是0.5 是0
16/3 --》5
2/3 --》
(2)取余,计算余数
只能用于整数运算 15%2 余数1
15.0%2 不对的,小数不能参与取余运算
实际开发作用:
除法和取余配合实现获取一个数的各个位
任意输入一个整数,编程得到这个整数总共多少位,各个位分别是多少
7545
(3)逻辑运算,跟条件判断配合在一起使用
if(a>b)
数学中: 10<x<100
C语言中: if(x>10 && x<100)
if(姓名==zhang || 姓名==王) //或者
if(姓名==zhang && 富二代) //并且
重点:区分==和=
==用来判断变量是否相同 if(a==b)
= 赋值运算符号
C语言规定的真和假
非零就是真 1 18 -9
零就是假
表达式一 || 表达式二 || 表达式三 //从左到右,有一个条件为真,后面的都不用运算了,整个表达式都为真
表达式一 && 表达式二 && 表达式三 //从左到右,有一个条件为假,后面的都不用运算了,整个表达式都为假
if(有房&&有车&&帅)
逻辑非 真--》假
假--》真
(4) 三目运算符
表达式1?表达式2:表达式3
判断表达式1是否为真
为真 --》执行表达式2
为假 --》执行表达式3
(5)位运算(重点)
对整数的二进制进行运算
按位与 & 只要有一个是0结果就是0,全部都是1,结果就是1
比如: 18&16结果是多少? int a=89; int b=96; a&=b; //等价于 a=a&b;
18 --》二进制 10010
16 --》二进制 10000
10000
特点: 任意一个整数要求把它的第三位二进制置0,其它位不允许改变
125--》二进制1111101 --》最终希望的结果1111001
1111101 --》125
1111011 &
1111001
任何二进制位跟1进行按位与运算结果保持不变
任何二进制位跟0进行按位与运算结果一定是0
按位或 | 只要有一个是1,结果就是1,全部都是0,结果就是0
比如: 18|16结果是多少?
18 --》二进制 10010
16 --》二进制 10000
10010
特点:
实际开发中,用位或运算去设置某一位二进制为1
int a=785;
785
00000.....100 或
任何二进制位跟0进行按位或运算结果保持不变
任何二进制位跟1进行按位或运算结果一定是1
按位异或 ^ 相同为0,相异为1
比如: 18^16结果是多少?
18 --》二进制 10010
16 --》二进制 10000
00010
特点:
实际开发中我想把某个数的二进制取反
比如: int a=785 第三位二进制取反
785
0000........100 异或
一个数跟自己异或,结果为0 a^a结果为0
异或满足交换律 a^b^a等价于 a^a^b
一个数跟0异或,结果保持不变 a^0结果为a
按位取反 ~ 0变成1 1变成0
比如: ~18结果是多少?
18 --》二进制 10010
~18 --》 01101
(6)组合运算(复合运算)
+= a+=10; //等价于 a=a+10;
(7)移位
左移 << 把一个整数的二进制整体向左移动若干位,低位补0
18<<2; //18左移2位
0000000000.........10010<<2
特点:一个数左移n位,相当于乘以2的n次方
右移 >> 把一个整数的二进制整体向右移动若干位,高位补什么??
算术右移: 高位补符号位
逻辑右移: 高位补0
特点:一个数右移n位,相当于除以2的n次方
(8)自增和自减
a++ 后置++ 先使用a原本的值,然后再把a加1赋值给自己
++a 前置++ 先把a加1,然后再使用加一之后的a
a-- 后置-- 先使用a原本的值,然后再把a减1赋值给自己
--a 前置-- 先把a减1,然后再使用减一之后的a
练习:
1. float a=1.6;
if(a==1.6) //请问这个条件是否成立,为什么
2. int a=10;
int b=6;
if((a<2)||(b=18))
printf("a ,s:%d b is:%d\n",a,b);
if((a<12)&&(a>b)&&(a=96))
printf("a ,s:%d b is:%d\n",a,b);
3. 用三目运算符实现三个整数求最大值
作业:
5. 总结按位或,按位异或的特点
完成任意一个整数m,要求把它的第三位二进制置零,置一,取反,其它二进制位不允许改变
明天预告
=====================
1. 循环,判断,switch goto
2. 数组,一维数组,二维数组
3. 指针