Java基础:位运算符

示例代码:

通过按位&把第6位设置为0,可以把小写字母变成大写字母

通过按位|把第6位设置为1,可以将大写字母变成小写字母

  1. class Demo{
  2.     public static void main(String args[]){
  3.         char ch;
  4.         char dh;
  5.         for(int i=0;i < 10;i++){
  6.             ch = (char)('a'+i);
  7.             System.out.print(ch+":");
  8.            ch = (char)((int)ch & 65503);//65503 二进制 1111 1111 1101 1111  通过按位&把第6位设置为0,可以把小写字母变成大写
  9.             System.out.print(ch +" ");
  10.  
  11.             dh = (char)('A'+i);
  12.             System.out.print(dh+":");
  13.             dh = (char)((int)dh | 32);//32二进制0001 0000通过按位|把第6位设置为1可以将大写字母变成小写字母
  14.             System.out.print(ch +" ");
  15.             }
  16.     
  17.     }
  18. }

--------------------------------------------------------------------------------------------------------------

可以利用按位&显示一个数的二进制

  1. class ShowBits{
  2.     public static void main(String args[]){
  3.         int t;
  4.         byte val;
  5.         val = 8;
  6.         for(t=128;t > 0;t=t/2){
  7.             if((val & t) != 0){
  8.                 System.out.print("1 ");
  9.                 }else{
  10.                     System.out.print("0 ");
  11.                     }
  12.             }
  13.     
  14.     }
  15. }
  16.  

------------------------------------------------------------------------------------------------

可以利用异或^创建一个简单的加密解密程序:一个值与同一个值异或两次,结果就是原值

  1. class EnCode{
  2.     public static void main(String args[]){
  3.         String msg = "This is a test";    //源字符串
  4.         String en = "";                             //加密后的字符串
  5.         String de = "";                             //解密后的字符串
  6.         int Key = 88;                               //密钥
  7.         
  8.         System.out.println("正常输出:"+ msg);
  9.         for(int i=0;i < msg.length();i++){
  10.             en = en + (char)(msg.charAt(i) ^ Key);    // 字符串中的字符按位与key异或            
  11.             }
  12.             System.out.print("加密后的:");
  13.             System.out.println(en);
  14.         
  15.         for(int i=0;i < en.length();i++){
  16.             de = de + (char)(en.charAt(i) ^ Key);    // 字符串中的字符按位与key异或
  17.             }
  18.             System.out.print("解密后的:");
  19.             System.out.println(de);    
  20.     
  21.     }
  22. }
     

---------------------------------------------------------------------------------------------

一元非~的用法,把操作数的二进制位取反

  1. class NotDemo{
  2.     public static void main(String args[]){
  3.         int t;
  4.         byte b;
  5.         b = 123;
  6.         for(t=128;t > 0;t=t/2){            //显示123的二进制
  7.             if((b & t) != 0){
  8.                 System.out.print("1 ");
  9.                 }else{
  10.                     System.out.print("0 ");
  11.                     }
  12.             }
  13.         System.out.println();
  14.     
  15.         b = (byte)~b;                       //按位~
  16.         for(t=128;t > 0;t=t/2){         //~后的二进制
  17.             if((b & t) != 0){
  18.                 System.out.print("1 ");
  19.                 }else{
  20.                     System.out.print("0 ");
  21.                     }
  22.             }
  23.     
  24.     }
  25. }
     
  26.  

------------------------------------------------------------------------------------------------------

位运算符:<<左移,>>右移,>>>无符号右移

扫描二维码关注公众号,回复: 5355921 查看本文章
  1. class ShiftDemo{
  2.     public static void main(String args[]){
  3.         int t;
  4.         int b;
  5.         
  6.     b = 1;
  7.     for(int i=0;i < 8;i++){
  8.         for(t=128;t > 0;t=t/2){
  9.             if((b & t) != 0){
  10.                 System.out.print("1 ");
  11.                 }else{
  12.                     System.out.print("0 ");
  13.                     }
  14.             }
  15.         System.out.println();
  16.         b = b << 1;          //左移1位
  17.         System.out.println();
  18.     }
  19.     System.out.println("________________");
  20.     b = 128;
  21.     for(int i=0;i < 8;i++){
  22.         for(t=128;t > 0;t=t/2){
  23.             if((b & t) != 0){
  24.                 System.out.print("1 ");
  25.                 }else{
  26.                     System.out.print("0 ");
  27.                     }
  28.             }
  29.         System.out.println();
  30.         b = b >> 1;           //右移1位
  31.         System.out.println();
  32.     }
  33.     
  34.     }
  35. }
     
  36.  

猜你喜欢

转载自blog.csdn.net/QQhelphelp/article/details/87926817
今日推荐