C 按位运算符

本文详细讲解了C语言中的按位逻辑运算符(包括取反、与、或、异或)和移位运算符(左移、右移)的工作原理及实例,帮助理解二进制运算在编程中的应用。

C 按位运算符分为以下两种:

<1> 按位逻辑运算符
<2> 移位运算符

其中 ,按位逻辑运算符分为以下4种:

(1) 二进制反码或按位取反: ~

分析: 一元运算符 ~ 把1变为0, 把0变为1。例如:

~(10011010)//表达式
(01100101)  //结果值

假设:val的类型是unsigned char ,已被2赋值。在二进制中, 00000010表示2。那么~val的值为253, 即11111101。

注意: 运算符不会改变val的值。就像 6*val 不会改变 val 的值一样。

(2)按位与: &

分析:
二元运算符&通过逐位比较两个运算符对象,生成一个新值。
对于每个位,只有两个运算对象中相应的位都为 1 时,结果才为 1(两个位都为真时, 结果才为真)。

例如:

(100010)&(011110)//表达式
(000010)//结果值
(3)按位或:|

分析:
二元运算符 | 通过逐位比较两个运算符对象,生成一个新值。
对于每个位,只有两个运算对象中相应的位都为 0 时,结果才为 0(两个位都为假时, 结果才为假)。

例如:

(100010)&(011110)//表达式
(111110)//结果值
(4)按位异或: ^

分析:
二元运算符 | 通过逐位比较两个运算符对象,生成一个新值。
对于每个位,只有两个运算对象中相应的位一个为1,另一个为0时,结果才为 1(两个位一个为真,另一个为假时, 结果才为真)。

例如:

(100010)&(011110)//表达式
(111100)//结果值

移位运算符 分为以下2种:

<1>左移: <<

分析:
左移运算符将 其左侧运算对象 每一位的值向左移动 其右侧运算对象指定的位数。(简单点说:每一位都向左移动两个位置)
左侧运算对象移出左末端位的值丢失,用 0 填充空出的位置。

(10001010) << 2 //表达式
(00101000)//结果值

注意:该操作产生了一个新的位值,但不改变其运算对象。

<2>右移: >>

分析:
右移运算符将 其右侧运算对象 每一位的值向右移动 其左侧运算对象指定的位数。(简单点说:每一位都向右移动两个位置)
右侧运算对象移出右末端位的值丢失,用 0 填充空出的位置。

(10001010) >> 2 //表达式
(00100010)//结果值

注意:该操作产生了一个新的位值,但不改变其运算对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值