(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. 使用堆栈结构进行字符串表达式("7*2-5*3-3+6/3")的计算

    问题: 给定字符串String str = "7*2-5*3-3+6/3", 求出字符串里面表达式的结果? 像javascript有自带的eval()方法,可以直接计算.但java ...

  2. web.config中的profile

    aspnet_regsql命令创建需要的表结构 public class UserProfile:ProfileBase { [SettingsAllowAnonymous(true)] //默认匿名 ...

  3. MVC5移除不常用Nuget命令

    ---移除JQuery.* 和bootstartp Uninstall-Package bootstrap Uninstall-Package Microsoft.jQuery.Unobtrusive ...

  4. Android-------------获取手机IP地址

    ##帮助类PhoneNetStateUtil package com.funs.PhoneIPAddress.utils; /**      * 手机联网状态工具类 需要的权限 WIFI时:</ ...

  5. 数据库分库分表(sharding)系列(四) 多数据源的事务处理

    系统经sharding改造之后,原来单一的数据库会演变成多个数据库,如何确保多数据源同时操作的原子性和一致性是不得不考虑的一个问题.总体上看,目前对于一个分布式系统的事务处理有三种方式:分布式事务.基 ...

  6. 一个cocos2d-x的项目

    前几天完成了一个cocos2d-x的项目,放在git上: https://github.com/gittor/Jigsaw 采用cocos的版本是3.7.1. 项目是一个拼图的游戏,市面上的拼图类游戏 ...

  7. Android再学习-20141018-布局-进度条

    20141018-Android再学习 对齐至控件的基准线 为了保证印刷字母的整齐而划定的线(四线三格的第三条线). android:layout_alignBaseline 与父控件的四个边缘对齐( ...

  8. 使用pip install 或者easy_install安装Python的各种包出现cc failed with exit status 1

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  9. iOS 面试题集合

      ASIDownloadCache 设置下载缓存 它对Get请求的响应数据进行缓存(被缓存的数据必需是成功的200请求): [ASIHTTPRequest setDefaultCache:[ASID ...

  10. Block(二)内存管理与其他特性

    一.block放在哪里 我们针对不同情况来讨论block的存放位置: 1.栈和堆 以下情况中的block位于堆中: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...