位运算符的介绍
来源:互联网 发布: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;}
- 位运算符的介绍
- Java位运算符介绍
- 位运算符简单介绍
- 位运算符介绍(二):Java位运算符
- 位运算符介绍(二):Java位运算符
- C语言位运算符异或^的简单介绍
- 位运算<< >>介绍
- 位运算介绍
- 位运算介绍
- 位运算简单介绍
- 位操作简介, 介绍c/c++的位运算
- C的运算符:位运算符
- 按位与、按位或、按位异或、左移、右移运算符的简单介绍(部分二进制运算符的简单介绍)
- Java的位运算符
- java的位运算符
- 位运算符的应用
- 常用位的运算符
- java的位运算符
- block回调UIButton
- Codeforces Round #277.5 解题报告
- 串口通信编程--多线程异步方式
- Hadoop-2.2.0中文文档—— Shell命令
- XML(三)
- 位运算符的介绍
- 黑马程序员-多线程(二)
- 项目-v0.0.2
- 你还在用jquery.lazyload这个坑爹的图片分屏加载插件么?
- jQuery页面滚动图片等元素动态加载实现
- LeetCode(116) Populating Next Right Pointers in Each Node
- 多个控制器
- 感觉cocos的定时器不好用, 自已封装了一个
- java如何判断一个文件的类型