C语言之位操作

本文详细介绍了C语言中的位操作,包括位与(&)、位或(|)、位取反(~)、位异或(^)、位左移(<<)和位右移(>>)。内容涵盖位操作的基本概念、数据的二进制表示、各种位操作的用途及应用,如掩码、功能位控制、位移加密等,并提供了多个实践题目和解决方案。
摘要由CSDN通过智能技术生成

一,位操作与逻辑操作

位操作不同于逻辑操作。逻辑操作是一种整体操作,而位操作是针对内部数据位补码的操作。逻辑操作只有真假,位操作只有0和1。

运算符如下:
这里写图片描述

二,数据的二进制表示

1,八位二进制的补码
这里写图片描述
2,二进制打印

功能:显示二进制补码
这里写图片描述

三,位操作

1,位于(&)

这里写图片描述

x & 1 = x;        x & 0 = 0;

参考用途:在某些位保持不变的情况下,其余位置为0。

2,位或(|)

这里写图片描述

 x | 1 = 1;             x | 0 = x;

参考用途:某些位置不变,其余位为1。

3,位取反(~)

这里写图片描述

参考用途:间接的构造某个特别的数(如最大有符号正数),以增强程序的可读性。

4,位异或(^)

这里写图片描述

参考用途:某些位保持不变,其余位取反。

5,位左移(<<)

用法:x << n (n表示左移的位数)
规则:使操作数的各位左移,低位补0,高位溢出。
例:
5<<2=20
0101 <<2 = 010100

6,位右移(>>)

用法:x >> n
规则
使操作数的各位右移,移出的低位被舍弃。

对于高位而言,当是无符号数或有符号正数时,高位补0,当是负数时,则取决于所使用的系统:补0的为“逻辑右移”,补1的为“算术右移”。

例:
5 >> 2 =1
0101 -> 0001

20 >> 2 =5
10100 -> 0101

四,应用

1,掩码

掩码就是掩盖一些东西,留下一些东西。

2,功能
MASK=1<<1;
flag=0x96;

MASK -> 0000 0010
flag -> 1001 0110
  &  ->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值