码迷,mamicode.com
首页 > 编程语言 > 详细

java中的二进制

时间:2016-06-22 09:19:24      阅读:390      评论:0      收藏:0      [点我收藏+]

标签:

(1)按位与运算 &

   1 & 1 = 1, 0 & 1 = 0

   51 & 5  即 0011  0011 & 0000  0101 =0000 0001 = 1;

(2)按位或运算 |

      1 | 0 = 1,1|1 =1,  0|0 =0  
    51 | 5 即 0011  0011 | 0000  0101 =0011  0111 =55;
 

(3)异或运算 ^

     1 ^ 1 = 0,1 ^ 0 = 1   ,0^ 0 = 0(两个位的值不同,则结果为1,相同结果为0)

    51 ^ 5 即 0011  0011 ^0000  0101 =0011  0110=54;

 

(4)<<左移运算符

 1.将一个运算对象的各二进制位全部左移若干位(左边的二进制丢弃,右边补0)

(注意:java中 整数位 32位)

11 << 2 = 44

-14 <<2 =-56

-14的二进制(11111111  11111111  11111111 11110010)左移2位

            为       11111111  11111111  11111111  11001000

        结果为(-56)(后面讲述负数在二进制中如何表示的)

 

(5)>>右移运算符

将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1.

4 >> 2 = 1;

-14 >> 2 = -4;

 

(6)~按位取反

 ~6 = -7

 

(7)>>>无符号右移运算符

二进制各个位向右移指定的位数,右移后左边空出来的位用零来填充,移出右边的位被丢弃。

-14 >>> 2 =11111111  11111111  11111111 11110010 => 00111111 11111111  11111111  11111100 =1073741820

 

(8)<<<无符号左移运算符

二进制各个位向左移指定的位数,左移后右边空出来的位用零来填充,移出左边的位被丢弃。

3 <<< 1  = 6 

 

 

(9)二进制中负数的计算

 

负数以正数的补码表示

原码:一个整数按照绝对值的大小转化成二进制的数

反码:将二进制数按位取反

补码:反码加 1 

以-14 举例

原码:14 即 00000000  00000000  00000000  00001110

反码:         11111111  11111111  11111111  11110001

补码:          11111111 11111111  11111111  11110010

所以-14  的二进制是 11111111 11111111  11111111  11110010

假设 我们得到  二进制让我们求整数 就是倒着来取相反数

如二进制是           11111111  11111111  11111111  11110010

得到反码减1         11111111  11111111  11111111   11110001

原码:                  00000000  00000000  00000000   00001110

 即  1110  = 14  所以取反  就是-14

 

 

[java] view plain copy
 
 技术分享技术分享
  1. public static void main(String[] args) {  
  2.     /* 
  3.      * 十进制转化为其他进制 
  4.      */  
  5.     //二进制  
  6.        System.out.println(Integer.toBinaryString(0));  
  7.        //16进制  
  8.        System.out.println(Integer.toHexString(112));  
  9.        //8进制  
  10.        System.out.println(Integer.toOctalString(112));  
  11.        /* 
  12.         * 其他进制转化为是十进制 
  13.        */  
  14.        //二进制  
  15.        System.out.println(Integer.parseInt("1110000", 2));  
  16.        //8进制  
  17.        System.out.println(Integer.parseInt("71", 8));  
  18.        //16进制  
  19.        System.out.println(Integer.parseInt("A1", 16));  
  20.         
  21. }  



 

[java] view plain copy
 
 技术分享技术分享
  1. public class phone {  
  2.     /* 
  3.      * 转化int 为byte数组 
  4.      */  
  5.     public static byte[] int2Bytes(int id){  
  6.           
  7.         byte[] arr = new byte[4];  
  8. //      arr[0] = (byte)((int)(id >> 0*8)& 0xff);  
  9. //      arr[1] = (byte)((int)(id >> 1*8)& 0xff);  
  10. //      arr[2] = (byte)((int)(id >> 2*8)& 0xff);  
  11. //      arr[3] = (byte)((int)(id >> 3*8)& 0xff);  
  12.         for (int i = 0; i < arr.length; i++) {  
  13.             arr[i] = (byte)((int)(id >> i*8)& 0xff);  
  14.         }  
  15.         return arr;  
  16.     }  
  17.     /* 
  18.      * 转化byte数组为 int 
  19.      */  
  20.     public static int bytes2Int(byte[]arr){  
  21. //      int rs0 = (int)((arr[0]& 0xff) << 0*8);  
  22. //      int rs1 = (int)((arr[1]& 0xff) << 1*8);  
  23. //      int rs2 = (int)((arr[2]& 0xff) << 2*8);  
  24. //      int rs3 = (int)((arr[3]& 0xff) << 3*8);  
  25.         int result =0;  
  26.         for (int i = 0; i < arr.length; i++) {  
  27.             result += (int)((arr[i]& 0xff) <<i*8);  
  28.         }  
  29.           
  30.         return result;  
  31.     }  
  32.       
  33.       
  34.     public static void main(String[] args) {  
  35.         byte[] arr = phone.int2Bytes(8143);  
  36.         System.out.println(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]);  
  37.         System.out.println(phone.bytes2Int(arr));  
  38.         //字符串与字符数组  
  39.         String info="好好学习,天天向上";  
  40.         byte[] barr = info.getBytes();  
  41.           
  42.         String des = new String(barr);  
  43.         System.out.println(des);  
  44.     }  
  45. }  

 

 

 

如有不对,请指正!

java中的二进制

标签:

原文地址:http://www.cnblogs.com/zhenghengbin/p/5605768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!