目录

  • 按位逻辑运算符
  • 移位运算符

按位逻辑运算符

C语言提供了四种按位逻辑运算符
注:他们的操作数必须是整数。

1.按位取反(~)

~运算符把0变为1,把1变为0,如下例子所示:
~(0100 1001)=10110110,
这里需要注意的是

假设val的类型是unsigned char,已被赋值为2。在二进制中,0000 0010表示2。那么,~val的值是 1111 1101,即253。注意,该运算符不会改变val的值,但是可以这样用:val = ~val。 或者直接声明一个新的变量newval = ~val。

2.按位与(&)

&运算符通过逐位比较产生一个新值,如果把1看为真,0看为假,运算规则可以记为同真则真,一假则假。如下例子所示:
(1001 0011)&(0011 1101)=(0001 0001)

3.按位或(|)

|运算符通过逐位比较产生新值,如果把1看为真,0看为假,运算规则可以记为一真则真。如下例子所示:
(1001 0011)|(0011 1101)=(1011 1111)

4.按位异或(^)

^运算符通过逐位比较产生新值,如果两个运算对象中只有一个为1(但不是两个都为1),结果为1。如下例子所示:
(1001 0011)^(0011 1101)= (1010 1110)
c有一个按位异或和赋值运算结合的运算符:^=.

移位运算符

1.左移

表达式1 << 位数
将表达式1左移运算符右侧指定位数,移出左末端位的值丢,用0填充空出的位置。

2.右移

表达式1 >>位数

将表达式1右移运算符右侧指定位数,移出右末端的值丢掉,对于无符号类型,用0填充空出的位置;对于有符号类型,其结果取决于机器。空出的位置可用0填充,或者填充符号位原本的数字。如下例子所示:
(1000 1010)>>2 //表达式,有符号值
(0010 0010) //在某些系统中的值
(1000 1010)>>2 //表达式,有符号值
(1110 0010) //在另某一些系统中的值
下面是无符号值的例子:
(1000 1010)>>2
(0010 0010)

3.位移运算符用法

移位运算符针对2的幂提供快速的乘法和除法

number<<2 number乘以2的n次幂
number>>2 如果number 为非负,则用number除以2的n次幂

例题(选自c primer plus)
假设用一个unsigned long 类型的值表示颜色值,低阶位字节储存红色的强度,下一个字节储存绿的的强度,第三个字节储存蓝色的强度。随后你希望把每种颜色的强度分别储存在3个不同的unsigned char类型的变量中。那么,可以使用下面的语句:

#define BYTE_MASK 0xff
unsigned long color = 0x002a162f;
unsigned char bule, green, red;
red = color & BYTE_MASK 0xff;
green = (color >> 8) & BYTE_MASK 0xff;
blue = (color >> 16) & BYTE_MASK 0xff;

C语言按位运算符 按位逻辑运算 移位运算 及其用法相关推荐

  1. c语言中余数取整,C 逻辑运算, 移位运算 , 取整 , 取模(取余)

    一. 按位运算 (快速操作数据的某个位) ^   按位异或 ~  按位取反 &  按位与 |  按位或 二. 逻辑运算 &&  逻辑与   有一个值为 0 ,值为 0 ||  ...

  2. 【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)

    位运算符包括位逻辑运算符.位移运算符.最近做算法的时候经常用到,现在来总结下. 重点掌握的是 左移 << ,右移 >> . 1.位逻辑运算符 那么位逻辑运算符怎么计算的呢?先看 ...

  3. java位运算符和位运算表达式

    java位运算符和位运算表达式 > 右移 x>>a X各比特位右移a位 << 左移 X< >> 不带符号的右移 x>>>a X各比特位 ...

  4. c语言提供了6个位运算,C语言基础丨运算符之位运算符(六)

    对于更多紧凑的数据,C 程序能够用独立的位或多个组合在一块儿的位来存储信息.文件访问许可就是一个常见的应用案例.位运算符容许对一个字节或更大的数据单位中独立的位作处理:能够清除.设定,或者倒置任何位或 ...

  5. python位运算用途_Python 位运算符与位运算

    总结: 位运算符 是 直接对整数在内存中的二进制位进行操作: Python运算符优先级: 以下表格列出了从最高到最低优先级的所有运算符: 运算符 描述 ** 指数 (最高优先级) ~ + - 按位翻转 ...

  6. 位运算符和位运算(与,或,异或等)

    一."按位与"运算符(&) 1.运算规则 参加运算的两个数据,按二进位进行"与"运算,如果两个相应的二进位都为1,则该位的结果值为1,否则为0,即: 0 ...

  7. Java位运算符详解(移位、位与、或|、非~、异或^)

    位运算符 位运算是对操作数以二进制为单位进行的操作和运算,运算结果为整数.位运算符包括:"&"."|"."~"."^&qu ...

  8. 菜鸟教程python位运算符_NumPy 位运算

    NumPy 位运算 NumPy "bitwise_" 开头的函数是位运算函数. NumPy 位运算包括以下几个函数: 函数 描述 bitwise_and 对数组元素执行位与操作 b ...

  9. python位运算符_Python位运算符

    操作符1 名称:& 描述:按位与运算符 示例: #!/usr/bin/python # -*- coding: UTF-8 -*- # 定义变量,通过赋值运算符赋值"=" ...

最新文章

  1. springMVC4(9)属性编辑器剖析入参类型转换原理
  2. 一台机器上启动多个tomcat
  3. SpringBoot连接Mysql数据库遇到Unable to load authentication plugin ‘caching_sha2_password解决方案
  4. Maven 在 mac os M1芯片 上的安装
  5. JPA 2.1实体图–第1部分:命名实体图
  6. 游戏引擎开发和物理引擎_视频游戏开发的最佳游戏引擎
  7. 求n!最后一位非零数
  8. 运动:延伸你的美丽(图)
  9. 极简的js点击组图切换效果
  10. Windows下修改Git bash的HOME路径
  11. Gadgets 侧边栏小工具 跟踪调试方法
  12. 烤仔万花筒| Reach on Conflux 2021黑客松Demo Day
  13. sp485ee 芯片调试,RE DE 一直上拉故障
  14. 把图片放大清晰度不变的方法
  15. Java基础5多线程技术
  16. 前端基础入门之css less
  17. VC++获取系统信息/获取OS/获取MAC/获取本地IP/判断是否为网吧
  18. 零点起飞学java web_零点起飞学Java Web开发 (徐林林) 高清PDF_IT教程网
  19. 九州海上牧云记,电视剧节奏太慢?教你如何看全集
  20. 2018年诺贝尔经济学奖揭晓!两位美国教授获奖

热门文章

  1. TC2.0中怎样调用汇编程序
  2. IIS的Windows集成身份验证总结
  3. Cocoon概念性介绍
  4. LeetCode--80. 删除排序数组中的重复项Ⅱ(双指针,暴力)
  5. 入门机器学习(三)--课后作业解析-线性回归(Python实现)
  6. tar oracle home 权限不够,linux系统安装jdk
  7. android 不通过数据线打印日志_人人都可写代码-Android零基础编程-开发调试、APK编译04...
  8. 4017-二叉排序树的限定条件下的数据输出(C++,附思路及建立时的可能错误排查)
  9. header里面加值如何去掉引号_用ods tagsets.rtf 产生的表,怎么去掉页尾处的空白?...
  10. 2013汇总计算 广联达gcl_广联达图形算量GCL2013整体操作流程图文教程详解