位运算符的介绍

来源:互联网 发布:arttemplate.js api 编辑:程序博客网 时间:2024/06/18 00:27

前面的各种运算都是以字节为最基本存贮单元进行操作的。但在很多系统程序中常常要求再位遗迹进行运算或者处理。c语言提供了6种位运算符

&按位进行与运算

|按位进行或运算

^按位进行异或运算

~按位进行取反运算

<<按位进行左移

>>按位进行右移

注意只有~是单目运算符(只需一个操作数),其他的都是双目运算符(需要2个操作数),位运算符的操作数只能是整形或者字符型,不能使其他类型的数据

1&运算符

#include <stdio.h>#include <stdlib.h>int main(void){int a=9,b=5,c;c=a&b;printf("%d&%d=%d\n",a,b,c);system("PAUSE");return 0;}

按位与运算符通常用来对某些位清零或者保留某些位,例如将a的高8位清0,只保留低8位

2按位或运算

#include <stdio.h>#include <stdlib.h>int main(void){int a=9,b=5,c;c=a|b;printf("%d|%d=%d\n",a,b,c);system("PAUSE");return 0;} 

3按位异或运算符

功能是按参与运算的两数各对应的二进制进行异或运算,当对应的二进制相异时,结果为1,否则结果为0;

0^0=0;

1^0=1;

0^·1=1;

1^1=0;

#include <stdio.h>#include <stdlib.h>int main(void){int a=9,b=5,c;c=a^b;printf("%d^%d=%d\n",a,b,c);system("PAUSE");return 0;} 

4求反运算符~

为单目运算符

计算机内部是以补码的形式表示一个数,由补码求原码的规则如下:

1正数的原码与补码相同

2负数的原码是除符号外,各位取反,再加1

例如111111111110110的原码是

100000000001010

其中最高位是符号位,1表示负数,0表示正数,可知100000000001010为10进制数的-10

#include <stdio.h>#include <stdlib.h>int main(void){int a=9,b;b=~a;printf("~%d=%d\n",a,b);system("PAUSE");return 0;} 
5左移运算符<<

左移运算符是双目运算符,功能是将<<左边的操作数的各二进制位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,低位补0

设a=3,计算a<<4,a的二进制可表示为00000011,将00000011左移4位后为00110000(十进制48)

#include <stdio.h>#include <stdlib.h>int main(void){int a=3,b=4,c;c=a<<b;printf("%d<<%d=%d\n",a,b,c);system("PAUSE");return 0;} 

6右移运算符

右移运算符是双目运算符,功能是将>>右边的操作数的各二进制全部右移若干位,>>右边的数指定移动的位数,应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0,或是补1取决取决于编译系统的规定,大多数系统规定为补1

设a=15,计算a>>2

#include <stdio.h>#include <stdlib.h>int main(void){int a=15,b=2,c;c=a>>b;printf("%d>>%d=%d\n",a,b,c);system("PAUSE");return 0;} 



0 0
原创粉丝点击