(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

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

如有不对,请指正!

java中的二进制的更多相关文章

  1. Java中的二进制及基本的位运算

    Java中的二进制及基本的位运算 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借位规则是"借一当二 ...

  2. 在Java中关于二进制、八进制、十六进制的辨析

    八进制数中不可能出7以上的阿拉伯数字.但如果这个数是123.是567,或12345670,那么它是八进制数还是10进制数?单从数字的角度来讲都有可能! 八进制 所以在Java中规定,一个数如果要指明它 ...

  3. Java中处理二进制移位

    我相信,这篇文章读起来会相当有趣. 文章中编程语言是Java,用Java的原因:第一,Java不做数据溢出校验,这样我们可以忽略溢出异常:第二,Java普及率比较高,就像是python或shell,几 ...

  4. java中表示二进制、八进制、十进制、十六进制,double、float、整型

    java里不能这样表示二进制,只能是   8,10,16进制  8:         前置   0  10:      不需前置 16:      前置   0x   或者   0X double:2 ...

  5. java中表示二进制、八进制、十进制、十六进制

    1.进制 进制是一种记数方式 ,可以用有限的数字符号代表所有的数值.由特定的数值组成. 2.进制的表现形式 二进制: 由0和1两个数字组成. 八进制: 由0-7数字组成,为了区分与其他进制的数字区别, ...

  6. java中关于二进制的初步。

    两个int型和一个long型的转换: long now=1368257088802L;                  int low = (int) (0xFFFFFFFFL & now) ...

  7. java中使用二进制进行权限控制

    基本概念 package test; publicclass Rights { publicstaticvoid main(String[] args) { int a=1; // 001 状态a i ...

  8. Java中转换为二进制的几种实现

    public class HexUtil { private static final String[] DIGITS_UPPER = {"0", "1", & ...

  9. java中的进制转换方法

    java中进行二进制,八进制,十六进制,十进制间进行相互转换 关键字: java 进制转换 十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer ...

随机推荐

  1. 新建的硬盘-mount

    一.查看已经格式化或已挂接硬盘 df -aT 等命令(自己度娘) 二.查看未挂硬盘和未格式化硬盘 1.fdisk -l 比如/dev/sdb  如果已经分区,会有sdb1. 2.格式化 #mkfs - ...

  2. 常用aliyun公共资源列表

    公共DNS      223.5.5.5      223.6.6.6   源软件镜像站点      mirros.aliyun.com   NTP服务器 unix like      ntp1-7. ...

  3. Entity Framework - Func引起的数据库全表查询

    原文:http://www.cnblogs.com/dudu/archive/2012/04/01/enitity_framework_func.html 使用 Entity Framework 最要 ...

  4. Docker中的一些命令

    可以交互的方式启动container $ sudo docker run -t -i ubuntu:14.04 /bin/bash 当这个Bash shell进程终止时,这个容器也停止了. docke ...

  5. UIScrollView的属性

    属性 作用 CGPoint contentOffSet 监控目前滚动的位置 CGSize contentSize 滚动范围的大小 UIEdgeInsets contentInset 视图在scroll ...

  6. SignalR2.0开发实例之——群发消息

    一.前言 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相 ...

  7. HDU 5903 - Square Distance [ DP ] ( BestCoder Round #87 1002 )

    题意: 给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s, 要求字典序最小的答案    分析: 把字符串折半,分成0 - n/2-1 和 n/2 - n-1 d ...

  8. poj1083 贪心

    K - 简单dp Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:10000KB     64bit ...

  9. c#按键Up和Down对Textbox的内容加1减1

    private void textBox_proc1value_KeyDown(object sender, KeyEventArgs e) { Keys key = e.KeyCode; if (e ...

  10. php中利用HttpClient判断页面状态

    $url = ''; $info = parse_url($url); $httpClient = new HttpClient($info['host']); $httpClient->get ...