位运算符:

注:运算量仅仅能为整型和字符型数据,不能是实数型的数据。

当进行&运算时:0&1=0。1&0=0;1&1=1;0&0=0;

当进行|运算时:0|1=1;1|0=1;1|1=1;0|0=0。

当进行^运算时:0^1=1;1^0=1;1^1=1;0^0=0;

异或的交换:

a=a^b;b=b^a;a=a^b;

证明:由于a=a^b,b=b^a,a=a^b;

所以当计算前两个时可得:b=a.

计算第三个可得到的结果为:a=b.

当进行<<运算时:如a=15;a=a<<2时,a的二进制码为00001111。则左移两位后二进制为:00111100(高位左移溢出,舍去),即a=60。a=15*2的2次幂(这个公式仅仅能是在溢出的最高位里不含有1的情况下使用)。

当进行>>运算时:当无符号时,如a=15;a=a>>1时。a的二进制码为00001111。则右移一位后二进制为:00000111,即a=7.

当有符号时,如a=-10时,对a进行a=a>>1时,则a在计算机内的表示的二进制为a的补码(原码取反加1),另在计算机里负数进行右移时有两种表现形式,1.逻辑右移(即最高位加0)。2.算数右移(最高位加1)。

例如以下介绍两种不同的右移方式:

a=-10,其原码取绝对值为00001010,取反为:11110101。补码为:11110110,则当其是逻辑右移时,其右移的补码为:01111011,再求出其原码为:10000101。最高位的1为符号。所以可得到输出结果为:a=-5。

当进行算数右移时。其右移后的补码为:11111011,求出其原码为:00000101,即输出的结果为:a=5。

2.1 C语言下的位运算的更多相关文章

  1. 深入理解计算机系统(2.2)---布尔代数以及C语言上的位运算

    布尔代数上的位运算 布尔代数是一个数学知识体系,它在0和1的二进制值上演化而来的. 我们不需要去彻底的了解这个知识体系,但是里面定义了几种二进制的运算,却是我们在平时的编程过程当中也会遇到的.这四种运 ...

  2. C语言中的位运算和逻辑运算

    这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非( ...

  3. C/C++语言中的位运算

    在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作. 一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率.C语 ...

  4. C语言中的位运算的技巧

    一.位运算实例 1.用一个表达式,判断一个数X是否是2的N次方(2,4,8,16.....),不可用循环语句. X:2,4,8,16转化成二进制是10,100,1000,10000.如果减1则变成01 ...

  5. #C语言初学记录(位运算)

    位运算 Problem Description7-1 数组元素循环右移问题 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由 ...

  6. C语言基础知识--位运算

    1.原码,反码,补码: (1)在n位的机器数中,最高位为符号位,该位为零表示为正,为一表示为负:其余n-1位为数值位,各位的值可为零或一.当真值为正时,原码.反码.补码数值位 完全相同:当真值为负时, ...

  7. go语言-二进制与位运算

    一.进制介绍 1.二进制:0,1 -->不能直接用二进制来表示一个整数,用%b输出二进制 package mainimport "fmt"func main() { var ...

  8. C语言实验二——位运算

    问题 线性反馈移位寄存器 Linear feedback shift register(LFSR),是指给定前一状态,将该输出的线性函数再用作输入的移位寄存器.异或运算是最常见的单比特线性函数:对寄存 ...

  9. 2.2 Go语言基础之位运算操作

    一.位运算符 位运算符对整数在内存中的二进制位进行操作. 运算符 描述 & 参与运算的两数各对应的二进位相与. (两位均为1才为1) | 参与运算的两数各对应的二进位相或. (两位有一个为1就 ...

随机推荐

  1. cocos2d-x 数据存储

    这一章中,我们从一个小小的金币数入手,讨论了数据持久化的话题.我们尽量使用引擎提供的数据存储方法,以最大可能地适应跨平台需求.这里介绍的存储方法本质上都是基于 XML 的,对于 1 MB 以下的存储规 ...

  2. Django---MTV模型、基本命令、简单配置

    MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的时候 ...

  3. 经典 makefile 教程

     makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序 ...

  4. LeetCode: Letter Combinations of a Phone Number 解题报告

    Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations ...

  5. mysql主从复制的介绍

    引用:https://my.oschina.net/u/255939/blog/505598 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制 ...

  6. sql 判断

    sql server select expertId,mail= ( CASE mail WHEN '' THEN ' ' else mail end ) from Siemens.dbo.tblEx ...

  7. addEventListener()绑定事件的对象方法。

    addEventListener()绑定事件的对象方法.addEventListener()含有三个参数,一个是事件名称,另一个是事件执行的函数,最后一个是事件捕获,, obj.addEventLis ...

  8. 一款基于css3的简单的鼠标悬停按钮

    今天给大家分享一款基于css3的简单的鼠标悬停按钮.这款悬停按钮鼠标经过前边框是间断的.当鼠标经过的时候边框间隔消失.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div ...

  9. 带命名空间的XML的dom4j应用<转>

    Element root = document.getRootElement();     List   recordenvlist = document.selectNodes("//gm ...

  10. BusyBox telnet配置

    1.  busybox配置telnet相关命令. 2.  devpts文件系统,是目前最常见的pseudo终端,使用telnetd服务器,必须加载该文件系统. 在/dev目录下创建一个pts目录,用来 ...