二级C语言考试辅导教程第八章:枚举,位运算[2]

二级C语言考试辅导教程第八章:枚举,位运算[2],第1张

二级C语言考试辅导教程第八章:枚举,位运算[2],第2张

上述所有操作都是以字节为最基本的位。然而,在许多系统程序中,往往需要在比特级别上进行操作或处理。C语言提供了位运算的功能,这使得C语言也可以像汇编语言一样用来编写系统程序。
一、按位运算符C语言提供了六种按位运算符:
&按位AND
|按位OR
~ negation
>右移
1。按位AND运算按位AND运算的作用是参与运算中两个数的二进制相位。只有当两个相应的二进制位都为1时,结果位才为1,否则为0。运算中涉及的数以补数的形式出现。
例如:9&5可以这样写:00001001 (9的二进制补码)& 0000101 (5的二进制补码)000001 (1的二进制补码),所以9&5=1。资料来源:www.examda.com

按位AND运算通常用于清除某些位或保留某些位。例如,将A的高八位清零,保留低八位,可以用于&255运算(255的二进制数是000000011111111)。
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 | 0000101
0001101(十进制是13),所以9 | 5 = 13
main(){
int a = 9,9
c = a | b;
printf(" a = % d \ nb = % d \ NC = % d \ n ",a,b,c);
}

3.按位异或运算按位异或运算符“”是一种双目运算符。它的作用是参与运算的两个数对应的二进制或不同,当对应的二进制不同时,结果为1。参与操作数仍以补码形式出现,例如9 ^ 5可写成:00001001 0000101 00001100(十进制为12)
main(){
int a = 9;
a=a^15;
printf("a=%d\n ",a);
}

4.否定算子~是右组合的单目算子。它的功能是对运算中涉及的数字的每个二进制位求反。比如~ 9的运算是~(0000000000001001),结果是:1111111111110110。

5.左移操作左移运算符“>”右边的数字指定要移动的位数。
例如,设a=15,a>>2表示00001111右移至0000011(十进制3)。应当注意,对于有符号的数,符号位将右移。当它为正时,该位用0填充,而当它为负时,符号位为1。该位是用0还是1填充取决于编译系统的规则。Turbo C和许多系统被指定为补充1。
main(){
unsigned a,b;
printf("输入一个数字:");
scanf("%d ",& a);
b = a > > 5;
b = b & 15;
printf("a=%d\tb=%d\n ",a,b);
}
请看另一个例子!
main(){
char a='a ',b = ' b
int p,c,d;
p = a;
p =(p > 8;
printf(" a = % d \ nb = % d \ NC = % d \ nd = % d \ n ",a,b,c,d);
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 二级C语言考试辅导教程第八章:枚举,位运算[2]

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情