`

Java编程那些事儿25—位运算符

阅读更多

Java编程那些事儿25—位运算符
郑州游戏学院 陈跃峰
4.5 二进制运算符
由于计算机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操作二进制的运算符,这就是下面要讲解的位运算符和移位运算符。
使用二进制的运算符,可以直接在二进制的基础上对数字进行操作,执行的效率比一般的数学运算符高的多,该类运算符大量适用于网络编程、硬件编程等领域。
二进制运算符在数学上的意义比较有限。
在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字,八进制以数字0开头,例如016,十六进制以数字0和x开头,例如0x12,0xaf等等。
在计算二进制运算时,Java语言的执行环境(JRE)首先将十进制的数字转换为二进制,然后进行运算。如果输出结果的值,则数字会被转换成十六进制进行输出。
需要注意的是:
1、正数的机器数是原码,负数的机器数是补码,计算时需要小心。关于二进制和补码的计算可以参看《Java编程那些事儿7——进制的概念》和《Java编程那些事儿8——计算机内部的数据表达》。
2、整数型的计算结果都是int型,而不管是对byte还是short进行二进制运算。
4.5.1 位运算符
Java语言中的位运算符主要有4种:&(位与)、|(位或)、^(异或)和~(按位取反),下面依次介绍运算规则和使用示例。
l&(AND)
运算规则:参与运算的数字,低位对齐,高位不足的补零,对应的二进制位都为1,则运算结果为1,否则为0。
适用场合:屏蔽数字中某一位或某些位。因为任何数和0与都是0。
示例代码:
int a = 4;
int b = 10;
int c = a & b;
计算过程:
4的二进制形式为0000 0000 0000 0000 0000 0000 0000 0100
10的二进制形式为0000 0000 0000 0000 0000 0000 0000 1010
按照计算规则,结果为0000 0000 0000 0000 0000 0000 0000 0000
这个数字转换为十进制就是数字0
l| (OR)
运算规则:参与运算的数字,低位对齐,高位不足的补零,对应的二进制位有一个为1则为1,否则为0。
适用场合:将数字中某一位或某些位修改成1。因为1和任何数或都是1。
示例代码:
int a = 4;
int b = -10;
int c = a | b;
计算过程:
4的二进制形式为0000 0000 0000 0000 0000 0000 0000 0100
-10的二进制形式为1111 1111 1111 1111 1111 1111 1111 0110
按照计算规则,结果为1111 1111 1111 1111 1111 1111 1111 0110
这个二进制数转换为十进制就是数字-10。
l^(XOR)
运算规则:参与运算的数字,低位对齐,高位不足的补零,对应的二进制位相同为零,不相同为1。
适用场合:判断数字对应的位是否相同。
示例代码:
int a = 4;
int b = 10;
int c = a ^ b;
计算过程:
4的二进制形式为0000 0000 0000 0000 0000 0000 0000 0100
10的二进制形式为0000 0000 0000 0000 0000 0000 0000 1010
按照计算规则,结果为0000 0000 0000 0000 0000 0000 0000 1110
这个数字转换为十进制就是数字14
l~(NOT)
运算规则:只操作一个数字,将该数字中为1的位变成0,为0的位变成1。
适用场合:反转数字的内容
示例代码:
int a = 4;
int c = ~a;
计算过程:
4的二进制形式为0000 0000 0000 0000 0000 0000 0000 0100
按照计算规则,结果为1111 1111 1111 1111 1111 1111 1111 1011
这个数字转换为十进制就是数字-5。
其实位运算和实际的应该实现保持一致,也就是提供的电路级运算符号,每种运算符都有对应的电路实现。
实际使用简单示例:
l把任意数字转换为正数
假设n是一个任意的整数,则把n转换为正数的代码为:
int m = n & 0x7fffffff;
l判断任意数字倒数第三位的值是否为1
假设n是一个任意的整数,则判断的代码为:
int m = n & 0x4;
boolean b = (m != 0);
l将任意数字倒数第四位置为1
假设n是一个任意的整数,则代码为:
int m = n | 0x8;
分享到:
评论

相关推荐

    Java编程那些事儿

    "Java编程那些事儿"无疑是对这个强大语言的深入探讨,旨在帮助开发人员提升技能,拓宽视野。这份资料可能是由一系列章节或主题组成的文档,比如基础语法、面向对象编程、异常处理、集合框架、多线程、IO流、网络编程...

    Java编程那些事儿[完整版]PDF(无加密版)

    ### Java编程那些事儿 #### 序言 《Java编程那些事儿》是一本旨在帮助Java初学者快速入门并掌握Java编程技巧的书籍。本书由陈跃峰老师撰写,并由云低夕落人归进行整理,最终形成PDF版本上传至CSDN。 #### 程序设计...

    java那些事儿

    Java那些事儿,这是一个专为Java初学者准备的学习资源,涵盖了丰富的知识内容,旨在帮助新接触Java编程的人士快速上手并深入理解这门强大的编程语言。在这个压缩包中,我们有两份重要的文件:《Java编程那些事儿》的...

    java那些事儿chm

    《Java那些事儿》是一部深入探讨Java编程语言的综合性资料,主要以CHM(Microsoft Compiled HTML Help)格式提供。CHM是一种常见的电子书格式,它将HTML文档、图像和其他资源组合成一个单一的压缩文件,方便用户离线...

    Java程序员上班那点事儿

    在Java编程的世界里,深入理解和熟练掌握基础是至关重要的。书中可能会涵盖以下核心知识点: 1. **Java语法基础**:包括变量、数据类型、运算符、流程控制语句(如if-else,switch,for,while)以及函数的使用。...

    java初级入门

    **1.1 Java编程那些事儿1——序言** 本章节主要介绍了作者撰写这本书的目的和背景,旨在帮助编程初学者更好地理解和掌握Java编程的基础知识。书中强调了通过通俗易懂的语言来解释复杂的概念,并计划覆盖以下核心...

    JavaProgramming-those-things.zip_Java编程_Java_

    文件"Java编程那些事儿[www.TopSage.com].pdf"可能包含了对Java语言全面而深入的讲解。通常,这类资源会涵盖以下几个关键知识点: 1. **Java语言简介**:Java是由Sun Microsystems开发,后来被Oracle收购的一种面向...

    java学习相关资源

    2. **《Java程序员+上班那点事儿.pdf》**:这本书可能不仅涵盖了Java编程技术,还可能包含了一些实际工作中可能会遇到的问题和解决方案,比如代码调试、项目管理、团队协作等方面的经验分享,有助于初学者了解实际...

    java面试题集合java面试题集合java面试题集合

    Java作为一门广泛使用...通过阅读《Java面试题笔试题大全》、《Java程序员上班那点事儿》、《Java程序员面试宝典》、《Java企业面试题》以及《华为_中软等大公司JAVA面试试题》等资料,可以系统地复习和巩固这些知识。

    java笔试面试题目

    Java笔试面试题目是Java开发者在求职过程中必须面对的重要环节,它涵盖了广泛的Java编程知识,包括但不限于基础语法、数据结构、算法、多线程、集合框架、JVM优化、设计模式等。下面将针对这些关键领域进行详细的...

    JavaScript的Proxy可以做哪些有意思的事儿

    - 通过Proxy,开发者可以实现类似Java的私有属性、Python的属性装饰器等功能,让JavaScript代码更接近其他编程语言。 10. **框架与库**: - 许多现代前端框架和库,如Vue.js和MobX,利用Proxy实现响应式数据绑定...

Global site tag (gtag.js) - Google Analytics