`
xinklabi
  • 浏览: 1560446 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

Java SE7新特性之二进制字面量

    博客分类:
  • Java
 
阅读更多

 Java SE 7中, 整数类型(byteshortint以及long) 也可以使用二进制数系来表示。要指定一个二进制字面量,可以给二进制数字添加前缀 0b 或者 0B。下面的示例展示了一些二进制字面量:

     // 一个8位的'byte'值:
     byte aByte = (byte)0b00100001;

     // 一个16位的'short'值:
     short aShort = (short)0b1010000101000101;

     // 几个32位的'int'值:
     int anInt1 = 0b10100001010001011010000101000101;
     int anInt2 = 0b101;
     int anInt3 = 0B101; // B可以是大写或者小写.

     // 一个64位的'long'值.注意"L"后缀:
     long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;

         相比于十六进制或者八进制,二进制字面量可以使数据之间的关系更加清晰。比如, 下面数组中的每个后续数字是按位旋转的:

     public static final int[] phases = {
       0b00110001,
       0b01100010,
       0b11000100,
       0b10001001,
       0b00010011,
       0b00100110,
       0b01001100,
       0b10011000
     }

         十六进制中, 数字之间的关系并不清晰:

     public static final int[] phases = {
       0x31, 0x62, 0xC4, 0x89, 0x13, 0x26, 0x4C, 0x98
     }

         可以在代码中使用二进制字面量常量来验证一个规范文档, 比如一个针对假设的8位微处理器的模拟器:

     public State decodeInstruction(int instruction, State state) {
       if ((instruction & 0b11100000) == 0b00000000) {
          final int register = instruction & 0b00001111;
          switch (instruction & 0b11110000) {
            case 0b00000000: return state.nop();
            case 0b00010000: return state.copyAccumTo(register);
            case 0b00100000: return state.addToAccum(register);
            case 0b00110000: return state.subFromAccum(register);
            case 0b01000000: return state.multiplyAccumBy(register);
            case 0b01010000: return state.divideAccumBy(register);
            case 0b01100000: return state.setAccumFrom(register);
            case 0b01110000: return state.returnFromCall();
            default: throw new IllegalArgumentException();
          }
       } else {
          final int address = instruction & 0b00011111;
          switch (instruction & 0b11100000) {
            case 0b00100000: return state.jumpTo(address);
            case 0b01000000: return state.jumpIfAccumZeroTo(address);
            case 0b01000000: return state.jumpIfAccumNonzeroTo(address);
            case 0b01100000: return state.setAccumFromMemory(address);
            case 0b10100000: return state.writeAccumToMemory(address);
            case 0b11000000: return state.callTo(address);
            default: throw new IllegalArgumentException();
          }
       }
     }

         可以使用二进制字面量增强位图的可读性:

     public static final short[] HAPPY_FACE = {
       (short)0b0000011111100000,
       (short)0b0000100000010000,
       (short)0b0001000000001000,
       (short)0b0010000000000100,
       (short)0b0100000000000010,
       (short)0b1000011001100001,
       (short)0b1000011001100001,
       (short)0b1000000000000001,
       (short)0b1000000000000001,
       (short)0b1001000000001001,
       (short)0b1000100000010001,
       (short)0b0100011111100010,
       (short)0b0010000000000100,
       (short)0b0001000000001000,
       (short)0b0000100000010000,
       (short)0b0000011111100000
     }


     本文翻译自Oracle官方文档http://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html,如有不正确的地方,敬请指正,谢谢!
 
0
分享到:
评论

相关推荐

    java虚拟机规范 Java SE7

    java虚拟机规范 Java SE7 java虚拟机规范 Java SE7 java虚拟机规范 Java SE7

    java虚拟机规范(java SE7)

    第二章:java虚拟结构(运行时区域内存:寄存器,java虚拟机栈,java堆,方法去,运行时常量池,本地方法栈); 第三章:为java虚拟机编译; 第四章:Class文件格式; 第五章:加载、链接与初始化

    Java SE7 API中文文档-类库查询

    Java SE7 API中文文档-类库查询!Java SE7 API中文文档-类库查询!Java SE7 API中文文档-类库查询!Java SE7 API中文文档-类库查询!Java SE7 API中文文档-类库查询!Java SE7 API中文文档-类库查询!

    Java SE7 语言规范手册

    Java SE7 语言规范手册,来自:http://docs.oracle.com/javase/specs/jls/se7/jls7.pdf

    OCP java SE7 Programmer II Certification Guide

    OCP java SE7 Programmer II Certification Guide

    Java虚拟机规范(java se7) 高清文字版本

    于想了解 Java 虚拟机 的程序员来说,《Java 虚拟机规范》是必须阅读的,对于想深入了解 Java 语言细节的程序员, 阅读《Java 虚拟机规范》也有极大好处

    OCA Java SE7 Programmer I认证学习指南(Exam 1Z0-803).rar

    OCA Java SE7 Programmer I认证学习指南(Exam 1Z0-803).rar

    Java虚拟机规范 SE7

    虚拟机 Java 1.7 SE7

    Java虚拟机规范(Java SE7)

    介绍了Java虚拟机的规范,可以挑选自己需要的章节进行读取。

    Java虚拟机规范SE7

    Java Virtual Machine Specification Java SE 7 中文版 Java Virtual Machine Specification Java SE 7 中文版 Java虚拟机规范SE7

    Java SE 7 API文档

    Java SE 7 API文档。jdk7 API文档。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向...

    java虚拟机规范SE7

    虚拟机方面的权威著作 java虚拟机规范SE7,包含中文版和英文版

    java核心技术·卷II·高级特征(第9版·英文版)及源码

    新版做了全面更新,体现了Java SE7的变化,并将对Java SE 7新特性的完整描述融入对Java基本概念的精辟阐述中。  Java核心技术卷II:高级特性(第9版英文版)(上、下册)专为做实际项目的程序员编写,是一本真实可信、...

    Java虚拟机规范SE7.txt

    https://pan.baidu.com/s/1kO1Ng7HW_3I2Us8SpBoesw Java虚拟机规范

    Java虚拟机规范 (Java SE 7 中文版)

    《Java虚拟机规范(Java SE7版)》由林德霍尔姆著,本书完整而准确地阐释了Java虚拟机各方面的细节,围绕.Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而...

    java se 7 api chm

    java se 7 api chm english so salasala ~~yi ya ~~

    java虚拟机规范(java se 7)

    《Java虚拟机规范 7》是一份完整的描述Java虚拟机是如何设计的规范文档。这份文档对于任何一个希望实现Java虚拟机的编译器作者,或者希望实现一个与规范相兼容的Java虚拟机的程序员来说都是必不可少的。

    java编程语言英文第四版

    Targeted at intermediate-to-advanced developers, this is the definitive tutorial introduction and reference to the Java SE7 language and its essential libraries. Co-authored by "father of Java" James ...

    se7en管理模板

    se7en管理模板,基于Bootstrap3实现,好资源要多分享

Global site tag (gtag.js) - Google Analytics