| & 符号 不在意的地方 以及 一个常量表示为十六进制的意义

  1. 不常看到的表达式

    a |= b —–> a = a | b
    a &= b —–> a = a & b
    a ^= b —–> a = a ^ b

  2. 与运算 用“&”表示,规律如下:两个操作数中位都为1,结果才为1,否则结果为0

public class yuLearning
{
    public static void main(String[] args)
    {
        int a=129;
        int b=128;
        System.out.println("a 和b 与的结果是:"+(a&b));
    }
}

运行结果
a 和b 与的结果是:128
“a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128

  1. 非运算 用符号“~”表示 如果位为0,结果是1,如果位为1,结果是0
  2. 或运算 用符号“|”表示 两个位只要有一个为1,那么结果就是1,否则就为0
  3. 异或运算 用符号“^”表示 两个操作数的位中,相同则结果为0,不同则结果为1

此处我们应该注意 与非或运算之后输出的还是十进制的数;
同时或运算和与运算也可以用在if语句中
或运算“|” 的两边表达式都会被进行计算
与运算“&”的两边表达式都会被进行计算
这两点需要与 && 和 || 进行区别和注意

  1. 常量表示为十六进制

    当一个常量表示为十六进制之后,一般会用在与或操作中,通过对与非操作的结果,我们可以查看这个结果是由哪些情况组合的

例如

    private static final int FLAG_CLIP_CHILDREN = 0x1;     //对应的十进制为1
    private static final int FLAG_CLIP_TO_PADDING = 0x2;   //对应的十进制为2
    private static final int FLAG_ANIMATION_DONE = 0x10;   //对应的十进制为16
    private static final int FLAG_ANIMATION_CACHE = 0x40;  //对应的十进制为64
    private static final int FLAG_ALWAYS_DRAWN_WITH_CACHE = 0x4000; //对应的十进制为16384
    protected int mGroupFlags;

如果做了如下操作

        mGroupFlags |= FLAG_CLIP_CHILDREN;
        mGroupFlags |= FLAG_CLIP_TO_PADDING;
        mGroupFlags |= FLAG_ANIMATION_DONE;
        mGroupFlags |= FLAG_ANIMATION_CACHE;
        mGroupFlags |= FLAG_ALWAYS_DRAWN_WITH_CACHE;

则输出为
16467

因此我们可以认为现在flag是由FLAG_CLIP_CHILDREN,FLAG_CLIP_TO_PADDING,FLAG_ANIMATION_DONE,FLAG_ANIMATION_CACHE,FLAG_ALWAYS_DRAWN_WITH_CACHE几种状态组成的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值