0x1ff在C语言中,C语言学习--位操作

本文介绍了C语言中的位操作,包括位与(&)、位或(|)、位异或(^)、位取反(~)的原理和示例,并探讨了左移位<<和右移位>>的操作。在实际应用中,特别是在寄存器操作中,位操作用于精确地修改特定位,而不影响其他位。文章还提供了实战演练,展示了如何使用位操作设置、清除、取反和提取特定位,以及如何利用宏定义简化位运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在实践中常见的位操作有:

位与(&)、位或(|)、位异或(^)、位取反(~)

分析:

位与(&):二进制数(0或1),与1位与是无变化(本身),与0位于变成0.

位或(|)

:二进制数(0或1),与1位或是变成1,与0位或无变化(本身).

位异或(^):二进制数(0/1),与1位异或是取反,与0位异或无变化。(记忆方法是:相同为0,不同为1)

位取反(~): 二进制数(0/1), 原先是0则变为1,原先是1则变为0。

示例:

位与(&):

0xAA & 0x0F = 0x0A;

位或(|) :  0xAA | 0x0F = 0xAF;

位异或(^) : 0xAA ^ 0x0F =

0xA5;

位取反(~):~0xAA =

0x55;

2. 左移位<<

与右移位>>

C语言的移位要取决于数据类型

对于无符号数,左移时右侧补0(相当于逻辑移位)

对于无符号数,右移时左侧补0(相当于逻辑移位)

对于有符号数,左移时右侧补0(叫算术移位,相当于逻辑移动)

对于有符号数,右移时左侧补符号位(正数补0,负数补1,算术移位)

3.

位与位或位异或在操作寄存器时的特殊作用

寄存器操作的要求(特定位改变而不影响其他位)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值