C语言位运算题目

Python018

C语言位运算题目,第1张

一、位运算符c语言提供了六种位运算符:

&按位与

|按位或

^按位异或

~取反

<<左移

>>右移

1.按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。

例如:9&5可写算式如下:00001001(9的二进制补码)&00000101(5的二进制补码)00000001(1的二进制补码)可见9&5=1。

按位与运算通常用来对某些位清0或保留某些位。例如把a的高八位清0,保留低八位,可作a&255运算(255的二进制数为0000000011111111)。

main(){

inta=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(){

inta=9,b=5,c

c=a|b

printf("a=%d\nb=%d\nc=%d\n",a,b,c)

}

3.按位异或运算按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:00001001^0000010100001100(十进制为12)

main(){

inta=9

a=a^15

printf("a=%d\n",a)

}

4.求反运算求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如~9的运算为:~(0000000000001001)结果为:1111111111110110

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

高位丢弃,低位补0。例如:a<<4指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。6.右移运算右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

例如:设a=15,a>>2表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。turboc和很多系统规定为补1。

main(){

unsigneda,b

printf("inputanumber:")

scanf("%d",&a)

b=a>>5

b=b&15

printf("a=%d\tb=%d\n",a,b)

}

请再看一例!

main(){

chara='a',b='b'

intp,c,d

p=a

p=(p<<8)|b

d=p&0xff

c=(p&0xff00)>>8

printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d)

}

包括:1。&&逻辑

2。||逻辑或

3。!逻辑非

逻辑运算符用于对包含关系运算符的表达式进行合并或取非

对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。关于逻辑运算符的解释

请注意:任何使用两个字符做符号的运算符,两字符之间不应有空格,即将==写成=

=是错误的。

假设一个程序在同时满足条件a<10和b==7时,必须执行某些操作。应使用关系运算符和逻辑运算符“与”来写这个

条件的代码。用&&表示“与”运算符,该条件代码如下:

(a<10)

&&

(b==7)

类似地,“或”是用于检查两个条件中是否有一个为真的运算符。它由两个连续的管道符号(||)表示。如果上例

改为:如果任一语句为真,则程序需执行某些操作,则条件代码如下:

(a<10)

||

(b==7)

第三个逻辑运算符“非”用一个感叹号(!)表示。这个运算符对表达式的真值取反。例如,如果变量s小于10,程序

程序需执行某些操作,则条件代码如下:

(s<10)

(!(s>=10))

//s不大于等于10

关系运算符和逻辑运算符的优先级一般都低于算术运算符。例如,5>4+3的计算与5>(4+3)运算符是一样的,即

先计算4+3,再执行关系运算。此表达示的结果为“假”,即,将返回0。

下面的语句

printf("%d",5>4+3)

将输出

0

可以总结为:&&的结果是真真为真。||的结果是假假为假。