移位运算符
“>> 右移”
“<< 左移”
“>>> 无符号右移”
例子:
-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语言基础中的位运算在计算机科学中扮演着重要的角色,特别是在低级别的数据操作和优化算法时。位运算是指在二进制级别上对数据进行的操作,这些操作直接作用于单个比特(bit)。理解位运算对于深入学习计算机...
【完整课程列表】 ... Java SE编程入门教程 collection与...Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps
最后,理解和使用Java标准库(JDK)中的各种类和接口,比如Math类进行数学运算,Date和Calendar类处理日期和时间,是提升开发效率的关键。 总结来说,这份"java基础课件"涵盖了Java语言的基本语法、面向对象编程、...
【完整课程列表】 Java SE编程入门教程 collection与...Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps
【完整课程列表】 ... Java SE编程入门教程 collection与...Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps
"java经典入门教材"是专为初学者设计的学习资源,它包含了大量的基础知识,旨在帮助新手快速掌握Java编程。 首先,Java入门的基础部分通常涵盖以下几个关键知识点: 1. **Java环境配置**:安装Java Development ...
"dq.zip_java 入门_java入门"这个压缩包文件显然旨在为初学者提供Java编程的基础知识。 "JAVA学习入门"通常会涵盖以下几个关键部分: 1. **Java语言基础**:这包括基本的数据类型(如整型、浮点型、字符型和布尔型...
在这个"java新手_入门算法_经典"的学习资料中,包含了几个关键的算法和概念,这些都是学习Java编程的基础。 首先,"构成何种三角形"这个知识点涉及到几何学和条件判断。在编程中,你可以通过输入三边长度来判断一个...
11. **Java API**:Java标准库提供大量预先定义的类和方法,如Math类用于数学运算,String类用于字符串操作,Scanner类用于用户输入,等等。熟悉这些API能大大提高开发效率。 12. **Java SE与Java EE**:Java SE...
1. **基础语法**:这部分包括变量声明、数据类型(如基本类型和引用类型)、运算符(算术、比较、逻辑、位运算等)、流程控制(if语句、switch语句、for循环、while循环)以及异常处理。掌握这些基础语法是每个Java...
在编程世界中,Java是一种广泛使用的面向对象的编程语言,尤其适合初学者入门。这个名为“sizeyunsuan.rar”的压缩包包含了一个简单的Java程序,用于实现基础的四则运算功能,即加法、减法、乘法和除法。这个程序...
Java基础练习代码入门题训练 本资源旨在帮助初学Java的小伙伴练习Java的基础语法,涵盖了多种Java基础概念和语法结构,包括变量声明、数据类型、运算符、控制流语句等。 变量声明和数据类型 在Java中,变量声明...
java2入门经典.part01 Java2入门经典 图书目录 译者序 序 前言 第一章:Java概述 什么是Java Java语言的特性 学习Java java程序 学习Java要走的路 ava环境 基于Java语言的面向对象程序设计 对象是什么 如何定义...
今 年 6月 7日 ,由 SUN公 司 和 台 湾 经 济 事 务 部 信 息 发 展 局, 台湾信 息 技 术 研究 所 等 单 位 牵 头 ,成 立 了 一 个 "Java联 盟 ", 参 加 的 有 22个 在 台 湾相 当 著 名 的 计 算 机公 司 ,并 在 台 ...
8. **位运算:** 位运算符如`&`、`|`等。 9. **变量赋值:** 变量赋值时需要注意类型兼容性。 #### 五、Java程序调试与分析 1. **编译错误:** 在Java程序中,如果类型不匹配会导致编译错误。 - 例如,尝试将一个`...
### Java线程入门知识点详解 #### 一、Java线程基础知识概述 **1.1 什么是线程?** 线程是程序执行流的最小单元,是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。在Java中...
本章内容是《Java语言程序设计教程(Java 7)——入门与提高篇02》的核心部分,主要围绕Java的基本编码能力培养。在编写有效、高质量的Java代码之前,了解如何表示信息、处理信息,以及如何利用选择结构、循环结构、...
#### 五、Java中的数据类型和运算 - **知识点解析**:Java支持多种数据类型,包括基本数据类型和引用数据类型。此外,Java提供了丰富的运算符来处理数据。 - **关键点**: - 如何在程序运行时接收用户输入:使用`...
### Java做ACM题目入门知识详解 #### 一、引言 ACM(Association for Computing Machinery)编程竞赛是一项国际性的编程赛事,旨在测试参赛者的算法设计、编程能力和问题解决技巧。Java作为一门强大的面向对象编程...