为什么在google源码中往往能看到使用 二进制数据

来源:互联网 发布:js导入导出excel数据 编辑:程序博客网 时间:2024/04/24 19:33



http://blog.csdn.net/jjwwmlp456/article/details/38737721

http://blog.csdn.net/jjwwmlp456/article/details/38737721

http://blog.csdn.net/jjwwmlp456/article/details/38737721

http://blog.csdn.net/jjwwmlp456/article/details/38737721http://blog.csdn.net/jjwwmlp456/article/details/38737721





为什么在google源码中往往能看到使用 二进制数据

分类: Android 33人阅读 评论(0) 收藏 举报
二进制
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. public class Demo {  
  2.     static int a = 0x1;  
  3.     static int b = 0x2;  
  4.     static int c = 0x4;  
  5.     static int d = 0x8;  
  6.     static int e = 0x10;  
  7.     static int f = 0x20;  
  8.     static int g = 0x40;  
  9.     static int h = 0x80;  
  10.     static int i = 0x100;  
  11.     static int j = 0x200;  
  12.       
  13.     public static void main(String[] args) {  
  14.         System.out.println(a);  
  15.         System.out.println(b);  
  16.         System.out.println(c);  
  17.         System.out.println(d);  
  18.         System.out.println(e);  
  19.         System.out.println(f);  
  20.         System.out.println(g);  
  21.         System.out.println(h);  
  22.         System.out.println(i);  
  23.         System.out.println(j);  
  24.     }  
  25. }  

输出结果

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. 1  
  2. 2  
  3. 4  
  4. 8  
  5. 16  
  6. 32  
  7. 64  
  8. 128  
  9. 256  
  10. 512  

  上面使用16进制0x的形式,定义了一些二进制的数据,发现他们非常有规律,1 2 4 8 .... 进位时后面加0就是下一个二进制数。书写简单

  它们在二进制的表示为1,10,100,1000,10000....  类似这样只有一位有效位,其他位全为0

再来看下面

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. System.out.println(h | j);  
  2.         System.out.println((h | j) & h);//与比或的 优先级高  
  3.         System.out.println((h | j) & j);  
  4.         System.out.println(h & j);  

输出结果

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. 640  
  2. 128  
  3. 512  
  4. 0  


  当a不等于b时,发现符合二进制的数据,按位或(|)时,就是a+b,用其结果再按位与(&)其中一个元数据时,得到另一个

  当a不等于b时,按位与(&)时,结果直接就为0

  当a=b时,不管按位与还是按位或  那结果还是a


综上,所以源码中很多就如此应用了这一效果。 一般有一个 0x0的空、无的状态, 再有 1 2 4 8 ... 这样的二进制数的状态

用按位或: 可以将 多个状态累加   类似 flag1 | flag2 | flag3 ,得到的结果在二进制中的表示可能为101001 

用按位与: 可以将 内部的一个记录自身当前状态的变量 按位与 一个定义的状态值  类似 mCurFlag & FLAG1   

                   当结果不为0时或者说等于FLAG1时, 表示含有FLAG1这个状态



0 0