`
z276356445t
  • 浏览: 152196 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Java中的位运算<转>

阅读更多
本文章转自:http://www.blogjava.net/rosen/archive/2005/08/12/9955.html
移位运算符

    包括:
    “>> 右移”;“<< 左移”;“>>> 无符号右移”
    例子:
-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=3
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应用软件程序设计

    ReadTestquestion&lt;br&gt;7.5. 课程设计作业&lt;br&gt;第8章 日历记事本&lt;br&gt;8.1. 设计内容&lt;br&gt;8.2. 设计要求&lt;br&gt;8.3. 总体设计&lt;br&gt;8.4. 具体设计&lt;br&gt;8.4.1. 运行效果与程序发布&lt;br&gt;8.4.2. 主类CalendarPad&lt;br&gt;8.4.3. 记事本...

    Java课程设计(代码+清单)

    ReadTestquestion&lt;br&gt;7.5. 课程设计作业&lt;br&gt;第8章 日历记事本&lt;br&gt;8.1. 设计内容&lt;br&gt;8.2. 设计要求&lt;br&gt;8.3. 总体设计&lt;br&gt;8.4. 具体设计&lt;br&gt;8.4.1. 运行效果与程序发布&lt;br&gt;8.4.2. 主类CalendarPad&lt;br&gt;8.4.3. 记事本...

    二级(Java语言程序设计)考试大纲

    &lt;font size="3"&gt;&lt;font color="#ff0000"&gt;考试内容 &lt;br /&gt;&lt;/font&gt;&lt;strong&gt;一、Java语言的特点和实现机制&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;二、Java体系结构&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1.JDK目录结构。&lt;br /&gt;2.Java的API结构...

    java课程设计大作业

    【Java课程设计大作业&lt;计算器&gt;】是针对学习Java编程的学生进行的一项实践性项目,旨在提升他们的编程技能和对Java语言的理解。在这个项目中,学生需要设计并实现一个功能完备的计算器程序,能够进行基本的数学运算,...

    Java中的位运算

    ### Java中的位运算 #### 一、概述 位运算(Bitwise Operators)是计算机科学中的一个基础概念,它直接作用于二进制位上。在Java语言中,位运算符可以应用于所有整型数据类型,如`long`、`int`、`short`、`char`和...

    基于jsp+javabean+mysql三层结构的动态购物网站

    &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;本程序由“城市WebClub”独立自主开发,你可以对整个商城的版面甚至版权作任意修改,但传播本程序时,请保留本站的说明文件。&lt;br&gt;因为开发一个系统真的很痛苦!由于时间和水平关系,本系统还有...

    位运算课件(java学习位运算课件)

    在Java中,位运算主要包括按位与(&),按位或(|),按位异或(^),按位非(~),左移(&lt;&lt;),右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;). 这些运算符可以在整型变量之间进行,用于直接操作它们的二进制表示。例如,按位与运算符"&"用于两个...

    java课程设计

    一. 功能简介 &lt;br&gt;&lt;br&gt;1. 在执行本程序时,能打开一个窗口编辑器。...&lt;br&gt;⑦在“工具”菜单中添加一个“计算器”菜单项,并实现一个计算器,该计算器除了能进行四则运算以外还可以实现复数运算功能。&lt;br&gt;&lt;br&gt;

    java课程设计windows窗口

    &lt;br&gt;3. 在该窗口中添加“文件”,“编辑”和“工具”三个菜单。&lt;br&gt;4. 在“文件”菜单中添加“打开”,“关闭”,“保存”,“退出”四个菜单项,分别实现他们的功能。&lt;br&gt;5. 在“编辑”菜单中添加“剪切”,...

    java集合框架的使用。集合的运算

    在这个“java集合框架的使用”主题中,我们将深入探讨如何利用Java集合框架进行基本的集合运算,包括散列集合、求子集以及集合的交和并。 首先,我们要理解Java集合框架的基本层次结构。它主要包括接口(如List、...

    Java 中的位运算

    ### Java中的位运算知识点 #### 一、位运算概述 位运算是计算机科学中的一个基本概念,它直接针对二进制位进行操作。在Java语言中,提供了多种位运算符来处理二进制数据,这对于优化算法性能、提高程序效率等方面...

    java位运算大全.doc

    在Java中,位运算符包括右移(&gt;&gt;&gt;),左移(&lt;&lt;),无符号右移(&gt;&gt;),按位与(&),按位或(|),按位异或(^)以及按位取反(~)。其中,除了按位取反是单目运算符外,其他都是双目运算符,操作数必须是整型或字符型数据。 补码是Java...

    JAVA位运算.pdf

    本文将深入探讨Java中的位运算,包括位运算符、它们的工作原理以及在实际编程中的应用。 #### 位运算符及其功能 Java提供了多种位运算符,用于对整数类型的位进行操作。这些类型包括`long`、`int`、`short`、`char...

    servlet+jsp求复数

    &lt;title&gt;复数运算结果&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;复数运算结果&lt;/h1&gt; &lt;table border="1"&gt; &lt;tr&gt; &lt;th&gt;操作&lt;/th&gt; &lt;th&gt;结果&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;加法&lt;/td&gt; &lt;td&gt;${sum}&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;减法&lt;/td&gt; &lt;td...

    Java位运算的应用

    Java中的位运算是一种高效的操作方式,它可以直接对二进制数据进行操作,广泛应用于各种算法和数据处理中。本文将详细介绍这些位运算的应用,并通过具体的例子来解释它们的工作原理。 1. **奇偶数判断**:`a&1`可以...

    LF-Spy(Java服务器探针)

    &lt;br&gt;&lt;br&gt;LF-Spy能够自动测试目标Java服务器的网络连接速度、MAC地址、服务器硬盘剩余空间、服务器运算能力、服务器的内存资源损耗、cpu占用率、硬盘大小、页面执行时间等参数。并提供服务器基本信息,服务器组件支持...

    Java 字节码概述

    + istore, istore_&lt;n&gt;, lstore, lstore_&lt;n&gt;, fstore, fstore_&lt;n&gt;, dstore, dstore_&lt;n&gt;, astore, astore_&lt;n&gt; * 把一个常数装载到操作数栈: + bipush, sipush, ldc, ldc_w, ldc2_w, aconst_null, iconst_m1, iconst...

    struts2的demo框架学习例子

    &lt;h1&gt;运算结果:&lt;/h1&gt; &lt;p&gt;两数之和是:${calculate.result}&lt;/p&gt; &lt;!-- 或者显示减法结果: --&gt; &lt;!-- &lt;p&gt;两数之差是:${calculate.result}&lt;/p&gt; --&gt; &lt;/body&gt; &lt;/html&gt; ``` 为了使用户能够输入数字并触发计算,还需要...

    java位运算,符号运算 详细解释

    Java位运算是一种底层操作,它直接作用于二进制位,是计算机科学中的基础操作。在Java编程中,位运算可以用于高效地处理数据,尤其是在处理数组、位集或者进行低级优化时非常有用。本篇文章将深入探讨Java中的位运算...

Global site tag (gtag.js) - Google Analytics