c语言中取反位运算的作用,C语言位运算符及作用与或异或取反左移和右移
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语言位运算符及作用与或异或取反左移和右移相关推荐
- c语言位运算+乘法,关于c语言中的位运算。。。
标签:c++ 位运算是一种针对二进制数的一种运算 位运算 共有六种 都有其对应得操作符号 & (and) 位于 | (or) 位或 ~ ...
- 【C语言基础入门】2.C语言中四则运算、关系运算、逻辑运算与位运算
文章目录 一.概述 二.四则运算(+,-,*,/,%) 三.关系运算(<,>,<=,>=,==,!=) 四.逻辑运算与位运算 五.深度剖析位运算 一.概述 C语言中支持下面4种 ...
- python操作符顺序_Python语言中的操作符与运算顺序
在新鲜出炉的9月TIOBE编程语言排行榜上,Python历史性的挤下C++,次进入前三位,Python的热度也以肉眼可见的速度快速上涨着,学习Python的人越来越多,不只是成人,很多青少儿也选择从P ...
- python怎么定义一个变量自增_Python语言中的自增运算
本文主要向大家介绍了Python语言中的自增运算,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 接触过其他语言的同学可能都知道算数运算符里面有个自增运算符++, 在写循环的时候非 ...
- 位运算全面总结,关于位运算看这篇就够了
文章目录 1 位运算概述 2 位运算的性质 2.1 运算符的优先级 2.2 位运算符的运算律 3 位运算高级操作 4 负数的位运算 5 位运算的一些应用 6 位运算例题 6.1 更新二进制位 6.2 ...
- php二进制应用位运算,【转】PHP 位运算应用口诀
标签: 位运算应用口诀 清零取位要用与,某位置一可用或 若要取反和交换,轻轻松松用异或 移位运算 要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形. 2 "< 3 &q ...
- c语言中函数名可不可以由用户命名,C语言中变量名及函数名的命名规则与驼峰命名法...
在程序设计中,变量名.函数名.数组名等统称为标识 符.简单地说,标识符就是一个名字.除库函数的函数名由系统定义外,其余都由用户自定义.C语言规定,标识符只能由字母(a-z,A-Z).数字 (0-9). ...
- python 整数逆位运算_python训练营:注释、运算符、数据类型与位运算
天学习的内容整理成脑图如下,其中带☆的是需要重点掌握的模糊知识点,需要加强训练和记忆. 二.具体学习内容 2.1 注释 2.1.1 多行注释 2.1.2 长字符串注释 2.2 运算符 2.2.1 算术 ...
- c语言中不能编译,为什么`int;`可以在C语言中很好地编译,而在C ++中却不能?
考虑以下程序(请参见此处的现场演示). #include int main(void) { int ; // Missing variable name puts("Surprise&qu ...
- 嵌入式linux寄存器位运算,嵌入式linux C语言(一)――位运算的使用
嵌入式linux C语言(一)――位运算的使用 ARM是内存与IO统一编址,SoC中有很多控制寄存器,通过对这些寄存器进行位运算对这些控制寄存器进行设置,进而控制外设功能.在修改寄存器某些位的过程中不 ...
最新文章
- 如何创建复杂的机器学习项目?
- 在 64 位版本的 Windows 上,如何在 32 位版本的 ASP.NET 1.1 和 64 位版本的 ASP.NET 2.0 之间切换...
- 数字媒体技术和数据科学与大数据技术_?数据科学与大数据技术的就业前景和待遇怎么样?...
- java char 默认值_java 中char 的初始值
- mysql 获取刚插入行id汇总
- ping tracert 联系区别
- python3.7使用pip install xxxx报错:UnicodeDecodeError: 'gbk' codec can't decode byte
- spark中的ALS
- php mysql having_having的用法
- jparepository查询所有_JPA – JpaRepository 中使用的查询方法
- 深入浅出InfoPath——让管理员来部署InfoPath表单
- leetcode 贪心_贪心算法:给我最好的,现在就要!
- .NET Remoting Security使用小结 – TcpChannel
- 操作系统知识--线程
- 数据结构上机实践第四周项目4 - 建设双链表算法库
- 第五章 代码重用与函数编写(1)
- 深入理解Intel Core Microarchitecture
- 1811114每日一句
- AD2017破解步骤
- 计算机的静态存储区在哪里,静态随机访问存储器
热门文章
- 微型计算机原理连线题,微机原理第7章练习题及答案
- python实现五子棋游戏(控制台版)
- mac自带代码对比工具
- ubuntu ftp 服务的使用
- Character-level recurrent sequence-to-sequence model (翻译)
- Python(2)——Python下载安装
- 给定一个字符串,若是回文字符串则返回该字符串,否则补充该字符串成为回文字符串
- 未来的人工智能和 AR/VR 会从哪些方面影响教育?有什么机会?
- idea格式化java代码,设置属性自动换行
- inode对接微软服务器,H3C iNode智能客户端安装指导(Windows)-7.3-5PW102