异或在工程中的一种用法

 异或:可以理解为不带进位的二进制加法;

在程序中使用异或的一些性质,可以提高开发的速度和程序的可读性;

下边的程序实例,介绍了一种需要大量处理位操作的程序结构,对位操作的方式做了归一化的处理,可以避免类似程序难以阅读和差错的问题;

#include <stdio.h>
#include <stdlib.h>
#include "string.h"

//通过使用掩码,可以实现对不同位的操作的集中管理
#define FUN_INDEX 2
#define FUN_MASK 0x08
#define FUN_STATE_ON 0x08
#define FUN_STATE_OFF 0x00

int main()
{
    unsigned char x[3] = {0};
    x[FUN_INDEX] = 0xf1; //测试

    x[FUN_INDEX] = (x[FUN_INDEX] & (0xff ^ FUN_MASK)) | FUN_STATE_ON; //只改变相应的位

    printf("x[FUN_INDEX] = %x\n",x[FUN_INDEX]);

    return 0;
}

输出

x[FUN_INDEX] = f9

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值