运算符、表达式、语句 (预习)

来源:互联网 发布:淘宝网客服电话是多少 编辑:程序博客网 时间:2024/05/24 06:40

位预算:

   一般的位操作是用来控制硬件的,或者进行数据变换使用,灵活的位操作可以有效地提高运行的效率。

六种位运算符:

1、&     按位与

2、|       按位或

3、^      按位异或

4、~      取反

5、<<    左移

6、>>    右移、


按位与运算:

“&”是双目运算符,功能是曾参与运算的两个数字对应的二进制位相与。只有对应的两个二进位均为1时,结果才是1,否则为0

【注意】参与运算的数以补码方式出现

应用:

  1. 清0特定位(mask中特定位置0,其他位为1,s=s&mask)
  2. 取某数中指定位(mask中特定位置1,其他位0,s=s&mask)


按位或运算:

     按位或运算符“|”是双目运算符。功能是参与运算的两个数字对应的二进制位相或。只有对应两个二进位有一个为1是,其结果为1。

    【注意】参与运算的数以补码方式出现

应用:

常用来将原操作数某些位置1,其他位不变(mask中特定位置1,其他位0,s=s|mask)


按位异或运算:

“^”是双目运算符,其功能是参与运算的两个数字对应的二进制位相异或,当两对应的二进制位相异是结果为1

  【注意】参与运算的数以补码方式出现

应用:

  1. 使特定位的值取反(mask中特定位置1,其他位0,s=s^mask)
  2. 不引入第三变量,交换两个变量的值
   (设 a=a1,b=b1)

       a=a^b

       b=a^b

       a=a^b

我这里再用具体的数字来解释下

假设a=1010,b=0011

a=a^b     a=1001 b=0011

b=a^b     a=1001  b=1010

a=a^b     a=0011  b=1010

这样就把a和b的值交换了,并且没有引入第三个变量



左移和右移:

左移运算符“<<”是双目运算符,其功能是把“<<”左边的运算数的各二进制位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,地位补0

右移预算符“>>”是双目运算符,其功能是把“>>”左边的运算数的各二进制位全部右移若干位,由“>>”右边的数指定移动的位数。

【注意】对于有符号数,在右移时,符号位将随同时移动,当为正数时,最高位补0;为负数时,符号位为1,最高位补0还是1取决于编译系统的规定



语句

  空语句:只有分号“;”组成的语句

用途:
1、消耗CPU时间,起到延时作用
2、为了程序的结构清楚,可读性好,以后扩充新功能方便。

布尔变量与零值比较:
设布尔变量名字为flag,它与零值比较的标准if语句为
if  (flag)   //表示flag为真
if  (!flag)  //表示flag为假

整形变量与零值比较:
【注意】应将整形变量用“==”或“!=”直接与0比较
设整形变量的名字为value,它与零值比较的标准if语句为
if   (value == 0) 
if   (value != 0)

浮点变量与零值比较:
【注意】不可以将浮点变量用“==”或“!=”与任何数字比较,float 和 double 类型的变量都有精度制,所以用“>=”或“<=”的方式来比较
设浮点变量的名字为x
if((x>=-EPSINON)&&(X<=EPSINON))其中EPSINON是允许的误差(精度)


指针变量和零值的比较:

【注意】应当将指针变量用“==”或“!=”与NULL比较,指针变量的零值是“空”(记为NULL)
假设指针变量的名字是p,它与零值比较的标准if语句为
if   (p == NULL)   // p与NULL 显示比较,强调p是指针变量
if   (p != NULL)

NULL 不能被赋值!!!
0 0
原创粉丝点击