打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JAVA的位操作符

最近几种进制,加上各种位操作符,发现都比较模糊,不能完全掌握,这里就再熟悉熟悉。

 

1.按位操作符 :

   按位操作符是用来操作基本数据类型中的单个bit,即二进制位,会对两个参数执行布尔代数运算,获得结果。

   与(&)运算:

   1&1 = 1, 1&0 = 0, 0&0  = 0; 这里相当于做乘法,也可以认为男女双方都有感觉才有结果。

   或(|)运算:

   1 | 1 = 1, 1|0=1, 0|0 = 0;这表示条件宽松,只有有一方有感觉,都可以有结果。

   异或(^)运算

   1 ^ 1 = 0; 1^0 = 1;0 ^ 0 = 0; 这表示两个冤家,非要不同,经过磨难才能有结果。

    上面都是二元操作符,而 非(~) ,是一元操作符,也叫取反操作。连符号位 也会取反哦,

    

    

    注意:上面的二元操作符可以和 “=”连用,比如:&=,|=。 一元非不行

 

2.移位操作符

   这也是操作二进制的。

   >> <<: 带符号的左右移位,也就是说移动之后,高低位 补 0 还是1 根据 正负数判定。1 负数,0正数

   >> >:  无符号右移,无论正负数,前面(高位)都补0

   注意:所有的位移运算都会先转换成 int 到二进制,再进行操作。先看移动过程

 

   

Java代码  
  1. public static void main(String[] args) {  
  2. int a = 2;  
  3. // 原始数据  
  4. System.out.println(Integer.toBinaryString(a));  
  5. //00000000000000000000000000000010  前面的0,会被省略  
  6. System.out.println(Integer.toBinaryString(-a));  
  7. //11111111111111111111111111111110  
  8.   
  9. // 带符号的 右移动,这里用负数,方便观察  
  10.   
  11. System.out.println(Integer.toBinaryString(-a>>1));  
  12. //原始:11111111111111111111111111111110  
  13. //现在:11111111111111111111111111111111 比较,右移1位,前面自动加符号1  
  14.   
  15. System.out.println(Integer.toBinaryString(-a<<1));  
  16. //原始:11111111111111111111111111111110  
  17. //现在:11111111111111111111111111111100 比较,左移1位,后面默认加0   
  18.   
  19. // 看无符号 移动,也就是不管前面符号位  
  20. System.out.println(Integer.toBinaryString(-a>>>1));  
  21. //原始:11111111111111111111111111111110  
  22. //现在:1111111111111111111111111111111   比较,发现少了一位,因为无符号,默认前面补0  
  23.   
  24. // 这个无符号 ,不能左移动 - -!  
  25. //System.out.println(Integer.toBinaryString(-a<<<1));  
  26. }  

 

     下面看看 特殊的移动。

    

Java代码  
  1. byte b = 127;  
  2.     System.out.println("原始:"+Integer.toBinaryString(b));  
  3.     //原始:1111111  
  4.     //现在:11111110  这里移动了就是254了,已经默认转换成int 了。  
  5.     System.out.println(b<<1);  
  6.     // 这里如果强行转byte,会得到 -2.  
  7.     // int 和 byte 的转换,超过127,128 就会 成 -128,129 就成 -127.这样循环。  
  8.       
  9.       
  10.     int c =1;  
  11.     // 因为int 只有32位,到31位的时候,就成负数了。  
  12.     // 如果继续移动,就开始循环了。  
  13.     for(int i =1;i<34;i++){  
  14.         System.out.println(i+" : "+Integer.toBinaryString(c<<i));  
  15.         System.out.println(c<<i);  
  16.         }  
  17.     }  

 

  这里就是一些简单的位移运算 方式了

   

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
二进制相关基础知识
WTF系列深入Java中的位操作
Java 位运算(移位、位与、或、异或、非)
java位操作基本教程
学弟不懂原码、反码、补码,气的我给女朋友彻底讲了一夜
《程序员数学:位运算》—— 如何使用二进制计算乘法?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服