C语言位运算符及作用与或异或取反左移和右移

C语言位运算符及作用:与、或、异或、取反、左移和右移

http://www.cnblogs.com/zhangpengshou/p/3543056.html原地址

一、& 按位与

如果两个相应的二进制位都为1,则该位的结果值为1,否则为0

应用:

(1)清零

若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条件:

原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。

a 00101011

b 10010100

c 00000000 //c = a & b

(2)取一个数中某些指定位

若有一个整数a(2byte),想要取其中的低字节,只需要将a与8个1按位与即可。

a 00101100 10101100

b 00000000 11111111

c 00000000 10101100 //c = a & b

(3)保留指定位:

a 01010100

b 00111011

c 00010000 //c = a & b

二、| 按位或

两个相应的二进制位中只要有一个为1,该位的结果值为1。借用逻辑学中或运算的话来说就是,一真为真

应用:将一个数据的某些位定值为1

a 00110000

b 00001111

c 00111111 //c = a | b

三、^ 按位异或

若参加运算的两个二进制位值相同则为0,否则为1

应用:不用临时变量,交换两个值

计算前:

a=3,即011(2);b=4,即100(2)

计算过程:

a=a ^ b; //即111 = 011 ^ 100

b=b ^ a; //即011 = 100 ^ 111

a=a ^ b; //即100 = 111 ^ 011

计算后:

a=100(2)即 4 ;b = 011(2)即 3;

四、~ 取反

~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0

五、<< 左移

用来将一个数的各二进制位全部左移N位,右补0

六、>> 右移

将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0

七、原码, 反码, 补码的基础概念和计算方法

在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念《杂谝桓鍪? 计算机要使用一定的编码方式进行存储。原码, 反码, 补码是机器存储一个具体数字的编码方式.

(1)原码

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.

比如如果是8位二进制:

[+1]原 = 0000 0001

[-1]原 = 1000 0001

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

[1111 1111 , 0111 1111] 即 [-127 , 127]

原码是人脑最容易理解和计算的表示方式。

(2)反码

反码的表示方法是:

正数的反码是其本身

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.

(3)补码

补码的表示方法是:

正数的补码就是其本身

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补

对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.

补码举例:16位的变量求补码,比如-266的补码求法:( ( 266 ^ 0xffff ) + 1 ) 结果是0xfef6

参考:http://liuye066.iteye.com/blog/707114

C语言位运算符及作用与或异或取反左移和右移相关教程

c语言中取反位运算的作用,C语言位运算符及作用与或异或取反左移和右移相关推荐

  1. c语言位运算+乘法,关于c语言中的位运算。。。

    标签:c++ 位运算是一种针对二进制数的一种运算 位运算 共有六种 都有其对应得操作符号 &      (and)      位于 |        (or)         位或 ~     ...

  2. 【C语言基础入门】2.C语言中四则运算、关系运算、逻辑运算与位运算

    文章目录 一.概述 二.四则运算(+,-,*,/,%) 三.关系运算(<,>,<=,>=,==,!=) 四.逻辑运算与位运算 五.深度剖析位运算 一.概述 C语言中支持下面4种 ...

  3. python操作符顺序_Python语言中的操作符与运算顺序

    在新鲜出炉的9月TIOBE编程语言排行榜上,Python历史性的挤下C++,次进入前三位,Python的热度也以肉眼可见的速度快速上涨着,学习Python的人越来越多,不只是成人,很多青少儿也选择从P ...

  4. python怎么定义一个变量自增_Python语言中的自增运算

    本文主要向大家介绍了Python语言中的自增运算,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 接触过其他语言的同学可能都知道算数运算符里面有个自增运算符++, 在写循环的时候非 ...

  5. 位运算全面总结,关于位运算看这篇就够了

    文章目录 1 位运算概述 2 位运算的性质 2.1 运算符的优先级 2.2 位运算符的运算律 3 位运算高级操作 4 负数的位运算 5 位运算的一些应用 6 位运算例题 6.1 更新二进制位 6.2 ...

  6. php二进制应用位运算,【转】PHP 位运算应用口诀

    标签: 位运算应用口诀 清零取位要用与,某位置一可用或 若要取反和交换,轻轻松松用异或 移位运算 要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形. 2 "< 3 &q ...

  7. c语言中函数名可不可以由用户命名,C语言中变量名及函数名的命名规则与驼峰命名法...

    在程序设计中,变量名.函数名.数组名等统称为标识 符.简单地说,标识符就是一个名字.除库函数的函数名由系统定义外,其余都由用户自定义.C语言规定,标识符只能由字母(a-z,A-Z).数字 (0-9). ...

  8. python 整数逆位运算_python训练营:注释、运算符、数据类型与位运算

    天学习的内容整理成脑图如下,其中带☆的是需要重点掌握的模糊知识点,需要加强训练和记忆. 二.具体学习内容 2.1 注释 2.1.1 多行注释 2.1.2 长字符串注释 2.2 运算符 2.2.1 算术 ...

  9. c语言中不能编译,为什么`int;`可以在C语言中很好地编译,而在C ++中却不能?

    考虑以下程序(请参见此处的现场演示). #include int main(void) { int ;  // Missing variable name puts("Surprise&qu ...

  10. 嵌入式linux寄存器位运算,嵌入式linux C语言(一)――位运算的使用

    嵌入式linux C语言(一)――位运算的使用 ARM是内存与IO统一编址,SoC中有很多控制寄存器,通过对这些寄存器进行位运算对这些控制寄存器进行设置,进而控制外设功能.在修改寄存器某些位的过程中不 ...

最新文章

  1. 如何创建复杂的机器学习项目?
  2. 在 64 位版本的 Windows 上,如何在 32 位版本的 ASP.NET 1.1 和 64 位版本的 ASP.NET 2.0 之间切换...
  3. 数字媒体技术和数据科学与大数据技术_?数据科学与大数据技术的就业前景和待遇怎么样?...
  4. java char 默认值_java 中char 的初始值
  5. mysql 获取刚插入行id汇总
  6. ping tracert 联系区别
  7. python3.7使用pip install xxxx报错:UnicodeDecodeError: 'gbk' codec can't decode byte
  8. spark中的ALS
  9. php mysql having_having的用法
  10. jparepository查询所有_JPA – JpaRepository 中使用的查询方法
  11. 深入浅出InfoPath——让管理员来部署InfoPath表单
  12. leetcode 贪心_贪心算法:给我最好的,现在就要!
  13. .NET Remoting Security使用小结 – TcpChannel
  14. 操作系统知识--线程
  15. 数据结构上机实践第四周项目4 - 建设双链表算法库
  16. 第五章 代码重用与函数编写(1)
  17. 深入理解Intel Core Microarchitecture
  18. 1811114每日一句
  19. AD2017破解步骤
  20. 计算机的静态存储区在哪里,静态随机访问存储器

热门文章

  1. 微型计算机原理连线题,微机原理第7章练习题及答案
  2. python实现五子棋游戏(控制台版)
  3. mac自带代码对比工具
  4. ubuntu ftp 服务的使用
  5. Character-level recurrent sequence-to-sequence model (翻译)
  6. Python(2)——Python下载安装
  7. 给定一个字符串,若是回文字符串则返回该字符串,否则补充该字符串成为回文字符串
  8. 未来的人工智能和 AR/VR 会从哪些方面影响教育?有什么机会?
  9. idea格式化java代码,设置属性自动换行
  10. inode对接微软服务器,H3C iNode智能客户端安装指导(Windows)-7.3-5PW102