C中位操作

位操作的实现

位操作一般以下几种操作:

- 位的清零操作
- 位的置位操作
- 位的翻转操作

1. 位的清零操作

>  DATA  &= (~DATA_MASK)

示例代码:

#include "stdio.h"

#define DATA_MASK  (0x07)  /*对低3位操作掩码值*/
int main(){

    int data = 0x1a;
    printf("data before covert : %x\r\n",data);

    data &= (~DATA_MASK);  /*低3位清零*/

    printf("data after covert : %x\r\n",data);

    getch();
    return 0;
}

运行结果: 0x18

2. 位的置位操作

DATA |= DATA_MASK;

示例代码:

#include "stdio.h"

#define DATA_MASK  (0x07)  /*对低3位操作*/
int main(){

    int data = 0x1a;
    printf("data before covert : %x\r\n",data);

    data |= DATA_MASK;

    printf("data after covert : %x\r\n",data);

    getch();
    return 0;
}

运行结果: 0x1f

3. 位的翻转操作:

> DATA1 = DATA2 = DATA;
> DATA1 &=(~DATA_MASK);
> DATA2 = (~DATA2) & DATA_MASK; 
> DATA = DATA1 | DATA2;

示例代码:

#include "stdio.h"

#define DATA_MASK  (0x07)  /*对低3位操作*/
int main(){

    int data = 0x1a;
    int data1,data2;
    data1 = data2 = data;
    printf("data before covert : %x %x %x\r\n",data,data1,data2);

    data1 &= (~DATA_MASK);
    data2 = (~data2) & (DATA_MASK);
    data = data1|data2;

    printf("data after covert : %x %x %x\r\n",data1,data2,data);

    getch();
    return 0;
}

运行结果: 0x18 0x05 0x1d

此文只要是实现位的翻转,有些勻杂,有待改善,暂记!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值