C语言操作符(%,,|,^,<<,>>)
有目录,可自由选择。
- 取余符号%
取余符号是求余数,如5%2=1,17%6=5;
但是要注意的是参与取余的2个数都必须为整型数。
- 与符号&-按二进制位与
如:
#include<stdio.h>
int main()
{int a = 3, b = 5;int c = a & b;printf("%d\n", c);return 0;
}
与符号是将符号2边的数写成2进制,一一对齐,上下2个数&&,只有同真才为真;
a=3写成二进制是 00000000000000000000000000000011;
b=5写成二进制是 00000000000000000000000000000101;
2个数进行运算是 00000000000000000000000000000001;
得到二进制数1,二进制数1转换成十进制是1,所以输出结果是1;
总结:
以二进制形式进行运算,以十进制形式输出结果。
- 或符号|
或符号和与符号类似,都是以二进制形式进行运算,十进制输出。但|符号只有2假时才为假,其他情况为真;
a=3写成二进制是 00000000000000000000000000000011;
a=5写成二进制是 00000000000000000000000000000101;
进行或运算 00000000000000000000000000000111;
111换算成十进制是7,即输出结果为7;
- 异或符号^
进行异或运算时也是以二进制形式进行,异或运算的方法就是相同为0,相异为1;
a=3写成二进制是 00000000000000000000000000000011;
a=5写成二进制是 00000000000000000000000000000101;
进行异或运算 00000000000000000000000000000110;
110换算成十进制是6,即输出的结果为6;
- 右移操作符>>
#include<stdio.h>
int main()
{int a = 8;int c = a >>1;printf("%d\n", c);return 0;
}
右移操作符也是以二进制形式进行,a>>1,表示以二进制形式向右移动一位;
a=8的二进制表示是1000如图:
![](/assets/blank.gif)
右操作符分为2种:
1.算数移位
右边丢弃,左边补原符号位;
2.逻辑移位
右边丢弃,左边补0;
不过一般计算机都采用算数移位,如上图,移位补位后得到的结果为100,转换成10进制是4;即输出结果为4;
要特别注意的是负数存储到内存中的是补码,要将原码换成补码后在进行移位,在这里不多讲,可以参考
C语言二进制(原码,反码,补码)
6.左移操作符<<
左移操作符就是将二进制数向左移相应的位数,右边补0.
若a=8, c=a<<3;则移位后补0是1000000,转换成10进制是64.
![](/assets/blank.gif)
此文章中涉及到较多关于二进制的问题,并没有详讲,可以参考
C语言二进制http://t.csdn.cn/UilQ8
最新文章
- python 示列:抓取网页所有a连接
- Bitmap基本概念及在Android4.4系统上使用BitmapFactory的注意事项
- SSH客户端字符集编码设置
- android+mvp+登录案例,android mvp实现登录
- Python 把较长的一行代码分成多行的技巧
- SylixOS下基于NUC970的NAND驱动
- 高大上的集团名字_最火的微信名字大全男成熟内涵高大上
- C语言-指针的比较/指针加减
- [ HNOI 2015 ] 亚瑟王
- 服务器ibmc虚拟软驱的用法,远程控制 - FusionServer Pro X6000 服务器 iBMC (V250以下) 用户指南 35 - 华为...
- 深度神经网络简单介绍,深度神经网络百度百科
- linux无法访问443端口,无法监听EC2上的https端口443(Amazon Linux)
- a java exception has occured java
- hadoop集群搭建完整教程,java电商项目面试技巧
- dd error: resource busy
- 2012-11-21四六级词汇#9312;-----…
- Karas中LSTM模型的各个参数的含义
- 大商创虚拟服务器安装教程,【大商创X】一键部署安装文档教程解析
- 我在北京找工作(六):备战阿里巴巴java笔试2:前人的阿里总结
- JS总结——获取元素的各种高度宽度