按位操作的使用场景

2016-4-22 diaba 基础

    此次开发系统过程遇到一个问题,开始用一个字段用来标识是否做某件事儿,系统已经上线,发现需要记录是否的需求增加了2个,那么没有额外的字段,怎么办?
    针对此问题,设计了一个方案,利用按位操作符来满足此需求:
        该字段原来取值0/1,表示没做/已做
        现在设计该字段取值为三位二进制对应的十进制:
		二进制(想象)	对应十进制值		        含义
		000				0               三者都没做
		100				4		1做;2、3没做
		110				6		1、2做;3没做
		111				7		1、2、3均做

    判断某项是否做,操作因子:
		100				4
		010				2
		001				1


    如果检查1是否已经做,可以使用按位与操作:   


{当前状态} & {操作因子} == {操作因子} ——> currentStatus & 4 == 4


    根据状态经过3操作,得到新状态值:


{当前状态} | {操作因子} ——>  currentStatus | 1



标签: 按位操作

发表评论:

Powered by emlog 京ICP备15045175号-1 Copyright © 2022