zoukankan      html  css  js  c++  java
  • Java中的位运算

    在Java运算中有一种较为神秘的运算符——“位运算符”,说它神秘,主要是考虑到它的不常用性,一般在运算中,权限管理和游戏开发涉及到位运算比较多。

    Java位运算符有:~(取反),&(和),|(或),^(亦或),>>(右移),<<(左移)。

    那么位运算符到底是什么呢,见名知义,我们都知道,一字节等于8位,“位操作”就是在位级别上,对数值(二进制)进行操作运算,我们将对几种位运算一一解读:

    1、~(取反)

      首先我们要知道二进制在内存中是以补码存储的,二进制的第一位为符号位,0表示正数,1表示负数。

    正数:

      补码、反码与原码都是一样的。

    负数:

      反码是原码的符号位不变,其余各位取反得到的,

      补码是在反码的基础上加1。

    例1:~8在内存中的求解步骤:

      8的二进制是1000(第一位的0表示为正数)

      也就是说其补码为01000,

      补码取反得10111,

      结果的反码为:10111减去1得10110(为负数)

      结果的原码为:11001(符号位不变,其余各位取反)

      结果即为:-9

    例2:~(-9)在内存中的求解步骤:

      9的二进制是1001

      也就是说-9的原码是11001,

      反码为:10110(符号位不变,其余各位取反),

      补码为:10111,

      然后补码取反为:01000,

      结果的补码为01000(正数),

      那么结果的反码,原码均为01000,

      结果即为:8

    总结:

     2、&(和)

      对两个数值的二进制位进行和运算

      8的二进制是1000

      4的二进制是0100

      那么8&4的二进制为0000,即为0

     3、|(或)

      对两个数值的二进制位进行或运算

      8的二进制是1000

      4的二进制是0100

      那么8|4的二进制为1100,即为12

    4、^(亦或)

      对两个数值的二进制位进行亦或运算,对应位不同则为1,否则为0

      8的二进制是1000

      4的二进制是0100

      那么8^4的二进制为1100,即为12

    5、左移和右移

      右移一位相当于除以2求商

      左移一位相当于乘以2求积

    例如:12>>2=3

       2<<3=16

    6、扩展 

      位操作中的&、|与逻辑运算符&&、||有明显的区别:

      1.它们均属于二元运算符,逻辑运算符两边只能是逻辑值,而&、|两边不仅可以是逻辑值,还可以是数值,进行位操作。

      2.逻辑运算符又称短路运算符,当&&左边为false时,运算将不再继续进行,当||左边为true时,运算将不再继续进行,

      而&、|则会继续判断,相比之下,效率较低。

      

      

      

      

      

  • 相关阅读:
    New version of VS2005 extensions for SharePoint 3.0
    QuickPart : 用户控件包装器 for SharePoint Server 2007
    随想
    发布 SharePoint Server 2007 Starter Page
    如何在SharePoint Server中整合其他应用系统?
    Office SharePoint Server 2007 中文180天评估版到货!
    RMS 1.0 SP2
    SharePoint Server 2007 Web内容管理中的几个关键概念
    如何为已存在的SharePoint站点启用SSL
    Some update information about Office 2007
  • 原文地址:https://www.cnblogs.com/coderls/p/6400422.html
Copyright © 2011-2022 走看看