二进制和种类

个人博客: http://zhangsunyucong.top

前言

话回我刚刚毕业来到深圳时,作为一个android菜鸟在一个大神波哥的指导下,学到了很多东西。其中,二进制和分类就是我印象最深的。想按自己理解记录一下。

想一下,有这样的需求:一个物体有一个种类属性,它这个属性有很多相互独立可以相加的值,也就是它有很多种情况,而且一个物体可同时具有其中一个或者多个情况。而我们想用一个数字就表示它的所有情况(这就是数学思维,总把东西抽象化)。

来个具体的,用于表示一个人是否有高血压,高血糖,高血脂这种属性。这个属性可以有各种情况的值,一个人可以只是有高血压、高血糖或者高血脂,也可以有“三高”。那我们如何用一个十进制的值来表示一个人的这个属性的各种情呢?

我们可以让十进制数字的二进制表示的每一位代表一种情况,运用二进制的位运算来表示和判断它的各种情况。

思路分析

还是上面举的例子。二进制的每一位代表一种情况,三种情况我们可以用二进制的四位表示就可以。其他更多的情况,可以用更多的位来表示。我们约定结果的格式表示为:二进制,十进制。

高血压: 0001,1 。---表示一个人只有高血压 高血糖: 0010,2 。---表示一个人只有高血糖 高血脂: 0100,4 。---表示一个人只有高血脂

那如何表示其他各种情况呢?

表示一个人有高血压和高血糖:0001 | 0010 = 0011,3 表示一个人有高血压和高血脂:0001 | 0100 = 0101,5 表示一个人有高血糖和高血脂:0010 | 0100 = 0110,6 表示一个人有高血压、高血糖和高血脂: 0001 | 0010 | 0100 = 0111,7

我们就说,这就是各种情况“相加”。

如果要从多种情况中减除一种或者多种情况,又如何操作呢? 比如代表“三高”的7,我们如何从中减除高血压这种情况。

7 & (~0001) = 0111 & (~0001) = 0111 & 1110 = 0110,6

说明:自身取“非”是为了不影响原来其他的各种情况,只改变自身那种情况的位。减除多种情况,以此类推。这就是情况的“相减”

如果给我们一个十进制:7,我们又如何知道它表示有多少种情况呢?

1、是否有高血压 0001? 7 & 0001 = 0001 即 0111 & 0001 = 0001 2、是否有高血糖? 7 & 0010 = 0010 即 0111 & 0010 = 0010 3、是否有高血脂? 7 & 0100 = 0100 即 0111 & 0100 = 0100

这实际就是,位的与运算是否等于自身。这就是各种情况的判断方法。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值