~ 按位非(NOT) b = ~a
&按位与(AND) c = a &b
| 按位或(OR) c = a | b
^ 按位异或(XOR) c = a ^ b
>>右移 b = a >>2
>>>右移,左边空出的位以0填充 b = a >>>2
<<左移 b = a <<1
当然同样有 &=,|=,^=,>>=,>>>=,<<=。
有关这些操作的细节可以参看
www.pcvc.net/...id=247
位运算
前面介绍的各种运算都是以字节作为最基本位进行的。 但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。
一、位运算符C语言提供了六种位运算符:
&按位与
| 按位或
^ 按位异或
~ 取反
<<左移
>>右移
1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。
main(){
int a=9,b=5,c
c=a&b
printf("a=%d\nb=%d\nc=%d\n",a,b,c)
}
2. 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
例如:9|5可写算式如下: 00001001|00000101
00001101 (十进制为13)可见9|5=13
main(){
int a=9,b=5,c
c=a|b
printf("a=%d\nb=%d\nc=%d\n",a,b,c)
}
3. 按位异或运算 按位异或运算符“^”是双目运算符。
1.运算符
1)算术运算符
+-*/%++--
+:如果有加数为“”(字符串),表示连接
%:2%1 0
++:自增1 num++:先参与运算,然后在自增 ++num:先自增,再参与运算
--:自减1 num-- --num
2)赋值运算符
= += -= *= /= %=......
num=3;
+= num+=3=>num=num+3
左边?=右边=>左边=左边?右边
3)关系运算符
==!=><>=<=
表达式的结果为:boolean类型
==:用来判断两个数是否相等
4)逻辑运算符
&&||!^&|
结果类型:boolean类型
与:串联,并且
或:并联,或者
非:取反
异或:不同为真,相同为假
与:&& &区别:
&&:短路与,如果第一个能判断出结果,则云南电脑培训http://www.kmbdqn.cn/认为后面的不再判断
&:所有的都会判断
|| |区别:同上面
5)位运算符:
&|~^ <<>> >>>
对数值按位操作:
6&3
00000110
&00000011
00000010
<<:2<<3=>16补0
>>:16>>2=>4:正数补0,负数补1
>>>:补0
三目运算符:
?:
条件表达式?结果1:结果2;
如果表达式结果为true:结果为结果1
否则为结果2
1>2?1:0结果为0
&是位操作符,“按位与”;1转成二进制 01;2转成二进制 10;a&b=00转成十进制为0。
位运算符有:&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。优先级从高到低,依次为~、&、^、|。
按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x &0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x = x &077。
Java 的表达式就是用运算符连接起来的符合Java 规则的式子,运算符的优先级决定了表达式中运算执行的先后顺序。
扩展资料:
整数算术运算的异常是由于除零或按零取模造成的。它将引发一个算术异常。下溢产生零,上溢导致越界。例如:加1超过整数最大值,取模后,变成最小值。
一个op=赋值运算符,和上表中的各双目整数运算符联用,构成一个表达式。整数关系运算符<,>,<=,>=,==和!=产生boolean类型的数据。