`
alanland
  • 浏览: 642663 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java 中的位运算入门

    博客分类:
  • Java
阅读更多

移位运算符

“>> 右移”

<< 左移”

>>> 无符号右移”

例子:
-5>>3=-1
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1111 1111
其结果与 Math.floor((double)-5/(2*2*2)) 完全相同。

-5<<3=-40
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1101 1000 
其结果与 -5*2*2*2 完全相同。

5>>3=0
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0000
其结果与 5/(2*2*2) 完全相同。

5<<3=40
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0010 1000
其结果与 5*2*2*2 完全相同。

-5>>>3=536870911 
1111 1111 1111 1111 1111 1111 1111 1011
0001 1111 1111 1111 1111 1111 1111 1111

无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。
一个有趣的现象是,把 1 左移 31 位再右移 31 位,其结果为 -1。
0000 0000 0000 0000 0000 0000 0000 0001
1000 0000 0000 0000 0000 0000 0000 0000
1111 1111 1111 1111 1111 1111 1111 1111


位逻辑运算符

包括:
& 与;| 或;~ 非(也叫做求反);^ 异或

“& 与”、“| 或”、“~ 非”是基本逻辑运算,由此可以演变出“与非”、“或非”、“与或非”复合逻辑运算。“^ 异或”是一种特殊的逻辑运算,对它求反可以得到“同或”,所以“同或”逻辑也叫“异或非”逻辑。

例子:
5&3=1
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001

-5&3=1
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011

5|3=7
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0111

-5|3=-5
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 0011
1111 1111 1111 1111 1111 1111 1111 1011

~5=-6
0000 0000 0000 0000 0000 0000 0000 0101
1111 1111 1111 1111 1111 1111 1111 1010

~-5=4
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 0100

5^3=6
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0110

-5^3=-8
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 0011
1111 1111 1111 1111 1111 1111 1111 1000

分享到:
评论

相关推荐

    Java基础入门学习教程PPT课件 JAVA语言程序设计 JAVA_03 JAVA语言基础 位运算(共21页).ppt

    Java语言基础中的位运算在计算机科学中扮演着重要的角色,特别是在低级别的数据操作和优化算法时。位运算是指在二进制级别上对数据进行的操作,这些操作直接作用于单个比特(bit)。理解位运算对于深入学习计算机...

    Java SE编程入门教程 java序列化(共14页).pptx

    【完整课程列表】 ... Java SE编程入门教程 collection与...Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    java基础课件 java入门课件

    最后,理解和使用Java标准库(JDK)中的各种类和接口,比如Math类进行数学运算,Date和Calendar类处理日期和时间,是提升开发效率的关键。 总结来说,这份"java基础课件"涵盖了Java语言的基本语法、面向对象编程、...

    优质课件 java基础入门必学 Java SE编程入门教程 全套PPT课件 共30个文件 含辅助资料.rar

    【完整课程列表】 Java SE编程入门教程 collection与...Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java instanceof(共3页).pptx

    【完整课程列表】 ... Java SE编程入门教程 collection与...Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    java经典入门教材

    "java经典入门教材"是专为初学者设计的学习资源,它包含了大量的基础知识,旨在帮助新手快速掌握Java编程。 首先,Java入门的基础部分通常涵盖以下几个关键知识点: 1. **Java环境配置**:安装Java Development ...

    dq.zip_java 入门_java入门

    "dq.zip_java 入门_java入门"这个压缩包文件显然旨在为初学者提供Java编程的基础知识。 "JAVA学习入门"通常会涵盖以下几个关键部分: 1. **Java语言基础**:这包括基本的数据类型(如整型、浮点型、字符型和布尔型...

    java新手_入门算法_经典

    在这个"java新手_入门算法_经典"的学习资料中,包含了几个关键的算法和概念,这些都是学习Java编程的基础。 首先,"构成何种三角形"这个知识点涉及到几何学和条件判断。在编程中,你可以通过输入三边长度来判断一个...

    java学习基础入门

    11. **Java API**:Java标准库提供大量预先定义的类和方法,如Math类用于数学运算,String类用于字符串操作,Scanner类用于用户输入,等等。熟悉这些API能大大提高开发效率。 12. **Java SE与Java EE**:Java SE...

    Java从入门到项目实战【配套资源】自测题目.rar

    1. **基础语法**:这部分包括变量声明、数据类型(如基本类型和引用类型)、运算符(算术、比较、逻辑、位运算等)、流程控制(if语句、switch语句、for循环、while循环)以及异常处理。掌握这些基础语法是每个Java...

    sizeyunsuan.rar_java 四则运算_四则运算

    在编程世界中,Java是一种广泛使用的面向对象的编程语言,尤其适合初学者入门。这个名为“sizeyunsuan.rar”的压缩包包含了一个简单的Java程序,用于实现基础的四则运算功能,即加法、减法、乘法和除法。这个程序...

    Java基础练习代码入门题训练

    Java基础练习代码入门题训练 本资源旨在帮助初学Java的小伙伴练习Java的基础语法,涵盖了多种Java基础概念和语法结构,包括变量声明、数据类型、运算符、控制流语句等。 变量声明和数据类型 在Java中,变量声明...

    java2入门经典.part01

    java2入门经典.part01 Java2入门经典 图书目录 译者序 序 前言 第一章:Java概述 什么是Java Java语言的特性 学习Java java程序 学习Java要走的路 ava环境 基于Java语言的面向对象程序设计 对象是什么 如何定义...

    java基础入门教程

    今 年 6月 7日 ,由 SUN公 司 和 台 湾 经 济 事 务 部 信 息 发 展 局, 台湾信 息 技 术 研究 所 等 单 位 牵 头 ,成 立 了 一 个 "Java联 盟 ", 参 加 的 有 22个 在 台 湾相 当 著 名 的 计 算 机公 司 ,并 在 台 ...

    java基础入门答案

    8. **位运算:** 位运算符如`&`、`|`等。 9. **变量赋值:** 变量赋值时需要注意类型兼容性。 #### 五、Java程序调试与分析 1. **编译错误:** 在Java程序中,如果类型不匹配会导致编译错误。 - 例如,尝试将一个`...

    java线程入门级书籍

    ### Java线程入门知识点详解 #### 一、Java线程基础知识概述 **1.1 什么是线程?** 线程是程序执行流的最小单元,是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。在Java中...

    Java语言程序设计教程(Java 7)——入门与提高篇02

    本章内容是《Java语言程序设计教程(Java 7)——入门与提高篇02》的核心部分,主要围绕Java的基本编码能力培养。在编写有效、高质量的Java代码之前,了解如何表示信息、处理信息,以及如何利用选择结构、循环结构、...

    java语言快速入门习题与答案

    #### 五、Java中的数据类型和运算 - **知识点解析**:Java支持多种数据类型,包括基本数据类型和引用数据类型。此外,Java提供了丰富的运算符来处理数据。 - **关键点**: - 如何在程序运行时接收用户输入:使用`...

    java做acm题目入门知识

    ### Java做ACM题目入门知识详解 #### 一、引言 ACM(Association for Computing Machinery)编程竞赛是一项国际性的编程赛事,旨在测试参赛者的算法设计、编程能力和问题解决技巧。Java作为一门强大的面向对象编程...

Global site tag (gtag.js) - Google Analytics