位运算是指按照二进制进行的运算,在C语言中,提供了6种的位运算符,他们分别是按位与(&),按位或(|),按位异或(^),按位取反(~),左移(《)和右移(》)。这些运算符只能用整型操作数,也就是说只能用于带符号和不带符号的short,int,long,char类型。

1:按位与(&)

按位与是指讲两个操作数按照二进制位进行“与”运算。两个操作数相应的二进制位都为1,结果为1,反之结果为0。这个按位与的运算规则其实和逻辑运算符“与”一样,只不过是按位与是在二进制位上进行运算。

以3和5举例说明,3的二进制为00000011(2),5的二进制为00000101(2)这按位与的运算结果为00000001(2)即3&5=1。

2:按位或(|)

按位或是指讲两个操作数按照二进制位进行“或”运算。两个操作数相应的二进制位只要有一个为1,结果为1,反之结果为0。

以3和5举例说明,3的二进制为00000011(2),5的二进制为00000101(2)这按位或的运算结果为00000111(2)即3|5=7

3:按位异或(^)

按位异或是指将两个操作数按照二进制位进行运算,两个操作数相应的二进制位值只要相同,运算结果为0,反之结果为1。

以3和5举例说明,3的二进制为00000011(2),5的二进制为00000101(2)这按位异或的运算结果为00000110(2)即3^5=6

4:按位取反(~)

按位取反是单目运算符,只有一个操作数,是将操作数相应的二进制位数值取反。

以5为例,5的二进制数为00000101(2)

按位取反结果为00000010(2)即~5=2

5:左移(《)

左移运算符是用来将一个数的各二进制位左移若干位,移动的位数由右操作数指定(右操作数必须是非负

以3来举例,3的二进制为00000011,左移结果为00000110,即《3=6

6:右移》

右移运算符是用来将一个数的各二进制位右移若干位,移动的位数由右操作数指定(右操作数必须是非负值),移到右端的低位被舍弃,对于无符号数,高位补0。对于有符号数,某些机器将对左边空出的部分用符号位填补(即“算术移位”),而另一些机器则对左边空出的部分用0填补(即“逻辑移位”)。注意:对无符号数,右移时左边高位移入0;对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0。如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的系统移入1。移入0的称为“逻辑移位”,即简单移位;移入1的称为“算术移位”。

c语言负数左移右移_C语言 位运算符的运算规则相关推荐

  1. c语言负数左移右移_C语言位运算符:与、或、异或、取反、左移和右移!

    语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符 ...

  2. c语言负数左移右移_C语言位运算符:与、或、异或、取反,左移和右移

    C语言位运算符:与.或.异或.取反.左移和右移 个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. ,则该位的结果值为1,否则为0 | ...

  3. c语言负数左移右移_C语言里的左移和右移运算

    C语言里的左移和右移运算 先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用运算符.例如:int i = 1;i = i 2; /把i里的值左移2位也就是说,1的2进制是000.0001(这 ...

  4. c语言负数左移右移_C语言中关于循环左移和循环右移

    昨天在解答同学的问题中,又接触了好久没碰的C中的位操作.在重接触的过程中,又理解了一遍计算机存储数据的细节,于是分享给大家看一下. 让我们先看一下题目:编写一个程序,输入两个整数i.j,如果j的值大于 ...

  5. c语言负数左移右移_C语言左移和右移

    事情的发生: 某日工作中有个需求是将不同的数值存到char的前4位和后4位中. 恰好同事中有同样取得32位int的前8位当成一个数值的代码: //取得32位中的高八位组成的值 #define U32_ ...

  6. c语言右移高位如何补1,c语言负数左移右移

    事情的发生: 某日工作中有个需求是将不同的数值存到char的前4位和后4位中. 恰好同事中有同样取得32位int的前8位当成一个数值的代码: //取得32位中的高八位组成的值 #define U32_ ...

  7. c语言左移15位,关于c语言中左移右移运算符的问题

    参照<c与指针>,在c语言中左移时,不论算术左移还是逻辑左移效果都是相同的.而且对于有符号和无符号类型执行相同的操作,即按照二进制位向左左移N位.例如: 1 clude 2 intmain ...

  8. c语言位运算负数的实例_C语言位运算符(附例题讲解)

    C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 12.1.1 按位与运算 按位与运算符 "&&qu ...

  9. C语言中左移右移运算规则

    https://blog.csdn.net/u012745229/article/details/51405332 左移 int i=1;i=i<<2;//把i里面的值左移2位 1 2 1 ...

最新文章

  1. 字符串匹配KMP算法
  2. Mac Pro 开机自启动 PHP-FPM,Nginx,MySql 等软件
  3. UVA10294项链和手镯(等价类计数问题)
  4. Oracle中 的 DBMS_CRYPTO加密包
  5. ASP.NET中新建Web网站并部署到IIS上(详细图文教程)
  6. 什么是ACID理论(二阶段、三阶段提交、TCC)
  7. C# 运行时中的泛型
  8. 安装hive操作参考视频
  9. 源码编译mysql-5.6.15
  10. appinventor贪吃蛇制作步骤_旋转RGB制作指导
  11. tcp三次握手和在局域网中使用 awl伪装MAC地址进行多线程SYN攻击
  12. HiveQL学习笔记(三):Hive表连接
  13. unsupported major.monor version 51.0 (unable to load *.servlet)………………
  14. face_recognition 安装报错问题解决
  15. QT 播放器之界面布局
  16. jdbc odbc连接mysql_具体说明JDBC连接数据库与ODBC连接数据的区别
  17. 【个人积累】轨道根数六要素中第4、5项的理解与STK仿真演示
  18. Win10:文件夹取消隐藏选项为灰色,无法勾选
  19. U盘中病毒后文件变为屏幕保护程序恢复方法
  20. 单片机计数器实验代码c语言,单片机计数器功能实验程序

热门文章

  1. linux在线更新curl,Linux:curl
  2. Python二级笔记(12)
  3. button设置disabled属性不生效_jQuery属性节点
  4. python 类静态属性_如何从Python中的类中引用静态属性?
  5. RNN,LSTM,GRU的理解
  6. c#随机数的产生与输出【C#】
  7. 1096: 字符逆序
  8. java应用中的日志介绍
  9. SpringBoot安装和创建简单的Web应用
  10. 201671010128 2017-09-24《Java程序设计》之继承