----------------------
ASP.Net+Unity开发、
.Net培训、期待与您交流! ----------------------
![](https://img-blog.csdn.net/20140224193506281?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXVkZXJlZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
----------------------
ASP.Net+Unity开发、
.Net培训、期待与您交流! ----------------------
位运算
1.1什么是位运算?
二进制时所作的与、或、异或等操作
1.2& 按位与
功能
只有对应的两个二进位均为1时,结果位才为1,否则为0。
举例:比如9&5,其实就是1001&101=1,因此9&5=1
规律
二进制中,与1相&就保持原位,与0相&就为0
1.3| 按位或
功能
只要对应的二个二进位有一个为1时,结果位就为1,否则为0。
1.4^ 按位异或
功能
当对应的二进位相异(不相同)时,结果为1,否则为0。
规律
相同整数相^的结果是0。
多个整数相^的结果跟顺序无关。
1.5~ 取反
对整数a的各二进位进行取反,符号位也取反(0变1,1变0)
1.6<< 左移
a<<n
把整数a的各二进位全部左移n位,高位丢弃,低位补0。左移n位其实就是乘以2的n次方
由于左移是丢弃最高位,0补最低位,所以符号位也会被丢弃,左移出来的结果值可能会改变正负性
1.7>> 右移
把整数a的各二进位全部右移n位,保持符号位不变。右移n位其实就是除以2的n次方
为正数时, 符号位为0,最高位补0
为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定
算术运算
2.1C语言里的算数用算符
C语言一共有34种运算符,包括了常见的加减乘除运算
1.加法运算+
除开能做加法运算,还能表示正号:+5、+90
2.减法运算-
除开能做减法运算,还能表示符号:-10、-29
3.乘法运算*
注意符号,不是x,而是*
4.除法运算/
注意符号,不是÷,也不是\,而是/
整数除于整数,还是整数。1/2的值是0,这个并不是二分之一
5.取余运算%
什么是取余:两个整数相除之后的余数
%两侧只能是整数
正负性取决于%左侧的数值
2.2算术运算的注意点
1.自动类型转换
int a = 10.6;
int b = 10.5 + 1.7;
2.自动将大类型转换为了小类型,会丢失精度
自动类型提升
int b = 10.5 + 10;
3.将右边的10提升为了double类型
double b = 1.0 / 2;
解决除法的精度问题
4.强制类型转换
double a = (double)1 / 2;
double b = (double)(1 / 2);
2.3运算优先级
赋值运算符
3.1赋值运算
int a = 10 + 5;的运算过程
a = b = 10;的运算过程
等号左边不能是常量,比如10 =11;
2.复合赋值运算符
+=
-=
*=
/=
%=
关系运算符
在C语言中,条件成立称为“真”,条件不成立称为“假”,因此,判断条件是否成立,就是判断条件的“真假”。
怎么判断真假呢?C语言规定,任何数值都有真假性,任何非0值都为“真”,只有0才为“假”。也就是说,108、-18、4.5、-10.5等都是“真”,0则是“假”。
4.1关系比较
开发中经常要比较
关系运算符的运算结果只有2种:如果条件成立,结果就为1,也就是“真”;如果条件不成立,结果就为0,也就是“假”。
4.2使用注意
1.关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低于后者:2==3>1
2.关系运算符的结合方向为“从左往右”: 4>3>2
3.关系运算符的优先级小于算术运算符3+4>8-2
逻辑运算
5.1&&逻辑与
1.使用格式
“条件A && 条件B”
2.运算结果
只有当条件A和条件B都成立时,结果才为1,也就是“真”;其余情况的结果都为0,也就是“假”。因此,条件A或条件B只要有一个不成立,结果都为0,也就是“假”
5.2&&逻辑与运算过程
总是先判断条件A是否成立
如果条件A成立,接着再判断条件B是否成立:如果条件B成立,“条件A && 条件B”的结果就为1,即“真”,如果条件B不成立,结果就为0,即“假”
如果条件A不成立,就不会再去判断条件B是否成立:因为条件A已经不成立了,不管条件B如何,“条件A && 条件B”的结果肯定是0,也就是“假”
5.3|| 逻辑或
1.使用格式
“条件A || 条件B”
2. 运算结果
当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立),结果就为1,也就是“真”;只有当条件A和条件B都不成立时,结果才为0,也就是“假”。
3.使用注意
•C语言规定:任何非0值都为“真”,只有0才为“假”。因此逻辑或也适用于数值。比如 5 || 4的结果是1,为“真”;-6|| 0的结果是1,为“真”;0|| 0的结果是0,为“假”
5.4! 逻辑非
使用格式
“! 条件A”
2> 运算结果
其实就是对条件A进行取反:若条件A成立,结果就为0,即“假”;若条件A不成立,结果就为1,即“真”。也就是说:真的变假,假的变真。
5.5优先级
逻辑运算符的优先级顺序为: 小括号() > 负号- > ! > 算术运算符> 关系运算符> && > ||
表达式!(3>5)|| (2<4) && (6<1) :先计算 !(3>5)、(2<4)、(6<1),结果为1,式子变为1|| 1 && 0,再计算1 && 0,式子变为1|| 0,最后的结果为1
表达式3+2<5||6>3 等价于 ((3+2) < 5) || (6>3),结果为1
表达式4>3&& !-5>2 等价于 (4>3) && ((!(-5))> 2) ,结果为0