`

转:Java 位移运算符的原理和作用

 
阅读更多

1.左移操作: x << n 
x可以是byte, short, char, int, long基本类型, n(位移量)只能是int型 

编译器的执行步骤: 
1) 如果x是byte, short, char类型, 则将x提升为int; 
2) 如果x是byte, short, char, int类型, 则n被重新赋值(过程是:取n的补码的低5位再转成十进制的int值,相当对n取32模: n=n%32); 
   如果x是long型, 则n被重新赋值(过程是:取n的补码的低6位再转成十进制的int值,相当对n取64模: n=n%64); 
   (因为int类型为4个字节,即32位,移动32位将没有任何意义.对于long则是模64) 
3) 对x左移n个位数, 整个表达式产生一个新值(x的值不变); 
2.<<是左移符号,x<<1,就是x的内容左移一位(x的内容并不改变) 
3.>>是带符号位的右移符号,x>>1就是x的内容右移一位,如果开头是1则补1,是0则补0,(x的内容并不改变). 
4.>>>是不带符号位的右移,x>>>1就是x的内容右移一位,开头补0(x的内容并不改变) 

  System.out.println("1<<2="+(1<<2)); 
  System.out.println("1<<8="+(1<<8)); 
  System.out.println("1<<16="+(1<<16)); 
  System.out.println("1<<24="+(1<<24)); 
  System.out.println("1<<31="+(1<<31)); 
  System.out.println("1<<32="+(1<<32)); 

1<<2=4 
1<<8=256 
1<<16=65536 
1<<24=16777216 
1<<31=-2147483648 
1<<32=1 

位运算符就是指对整数的二进制表示中的每一位进行操作,所得的结果一定是整数: 

  位运算符: 

    ~   位反  ~00110011                           11001100 

    &   位与 00110011&11101101            00100001 

    |    位或 00110011|11100001             11110011 

    ^   位异或  00110011^11100001        11010010 

    << 左移     00110011<<2                    11001100 

    >> 右移     10110011 >> 2                  11101100 

    >>> 不带符号右移  10110011>>>2         00101100 

分享到:
评论

相关推荐

    java位运算符.pdf

    位移运算符则有右移(&gt;&gt;&gt;和&gt;&gt;)和左移()。 1. **位逻辑运算符**: - **按位非(NOT)**:`~`运算符,对整数的每个位执行逻辑非操作,即将1变为0,将0变为1。例如,`~42`(二进制表示为00101010)会产生11010101...

    Java移位运算符1

    在Java编程语言中,移位运算符是一种高效的方式来进行位操作,它们对于处理二进制数据和进行快速的乘法、除法等计算非常有用。本文将深入探讨Java中的三种移位运算符:左移运算符(),右移运算符(&gt;&gt;)以及无符号右...

    Java移位运算符详解实例(小结)

    Java移位运算符是Java语言中的一种基本运算符,用于对二进制数进行位移操作。移位运算符主要包括左移位运算符()、右移位运算符(&gt;&gt;&gt;)和带符号的右移位运算符(&gt;&gt;)。这些运算符可以单独用来处理int型整数。 1. ...

    10_02.rar_10_02_java 位移

    3. 位移运算符:深入理解、&gt;&gt;和&gt;&gt;&gt;的用法及它们对二进制数据的影响。 4. 图形生成:如何通过编程实现分形山的可视化。 5. 注释规范:良好的编程习惯,通过注释解释关键代码的功能和作用。 通过分析并运行这个程序,...

    JAVA基础之java的移位运算

    Java的移位运算涉及到整数类型数据的二进制位操作,这对于理解计算机底层运作和优化代码至关重要。移位运算主要包括左移运算符()和右移运算符(&gt;&gt;,&gt;&gt;&gt;)。在Java中,所有的整数类型(除了char类型外)都是有符号...

    Java八股文高频面试题

    - **高效计算2乘以8**:使用位移运算符,如`2 ,这相当于将2向左移动3位,等同于2乘以2的3次方。 3. **数据类型**: - **Java数据类型分为基本类型和引用类型**:基本类型包括整数型(byte, short, int, long)、...

    JAVA中位运算符合移为运算符

    在Java编程语言中,位运算符和移位运算符是处理二进制数据的重要工具,它们在底层操作中发挥着关键作用。本文将深入探讨这两个主题,并通过实例解析其工作原理。 位运算符直接作用于整数类型的二进制表示,包括与(&...

    java技术面试宝典2020版.doc

    7. **高效计算2的幂**:使用位移运算符可以高效地计算2的幂。例如,2乘以8可以用2 表示,这比使用乘法更快,因为在计算机底层,位移运算通常比乘法更快。 8. **final关键字的使用**:final修饰变量时,如果是基本...

    Java笔记笔记笔记,会员专享

    6. **位运算符**:位移运算符,例如右移(&gt;&gt;&gt;)和左移(),分别表示除以和乘以2的特定次幂。位取反运算符(~)会将操作数的每一位反转,1变成0,0变成1。 7. **数组特性**:数组在创建后大小固定,不可改变。数组...

    Java 开发基于Misty1算法的加密软件(JAVA)的实现(源代码+论文).rar

    3. **位操作**:Java不直接支持位操作,但可以利用`&`、`|`、`^`等逻辑运算符以及`&gt;&gt;&gt;`和`进行位移操作来模拟位操作。 4. **Feistel结构**:Java程序需实现Feistel网络,即对输入数据进行多次迭代,每次迭代包括S盒...

    java 开发实战经典(名师讲坛)

    通过以上知识点的学习,可以系统地掌握 Java 开发的基本原理和技术栈,为后续深入学习和实践打下坚实的基础。同时,名师的教学资源会进一步帮助理解和掌握这些知识点,使学习过程更加高效和轻松。

    Java排列组合算法分析和代码实现

    3. 位运算的理解:在组合算法中,位运算的运用可以显著提升算法性能,你需要熟悉位运算符及其在Java中的使用。 4. 缓存优化:对于组合问题,可以考虑使用缓存存储已计算的结果,避免重复计算。 总之,这个资源包...

    java编程思想读书笔记

    - **位移运算符** - 如果操作的对象是 `char`、`byte` 或 `short` 类型,位移前会先将其提升为 `int` 类型。 **知识点六:流程控制** - **迭代 (Iteration)** - 逗号运算符只能用于 `for` 循环的初始化和步进...

    java面试题选

    6. **switch语句的适用性**:在Java 7之前,switch不能作用于long和String。但从Java 7开始,switch可以接受String类型,但仍然不支持long和其他非原始类型。对于byte、short、char和int,switch可以直接使用。 7. ...

    java c++ c 嵌入式 笔试题面试题集300套.rar

    1. C++基础:指针、引用、运算符重载、作用域。 2. 类与对象:构造函数、析构函数、友元、继承、多态。 3. 模板与泛型编程:函数模板、类模板、STL库的使用。 4. 异常处理:try-catch语句、异常类型。 5. 内存管理:...

    祖冲之密码算法Java实现

    2. **位操作**:祖冲之算法涉及到大量的位操作,如位移、按位与、按位或、按位异或等,因此需要熟练使用Java的位运算符。 3. **数据结构**:理解和实现LFSR,可能需要用到数组或自定义的数据结构来存储和操作状态...

    Java面试宝典.doc

    8. **2乘以8的计算**:最有效率的方式是使用位移运算符:`2 ,这等同于2乘以8。 9. **设计大整数计算器**:对于大规模计算,可以使用BigInteger类,它可以处理任意大小的整数运算。 10. **final关键字**:final...

    java程序员面试宝典电子书.pdf,这是一份不错的文件

    Java 程序员面试宝典电子书中涵盖了大量的Java基础知识和面试常见问题,以下是对部分内容的详细解读: 1. **Java源文件结构**:一个`.java`源文件可以包含多个类,但只能有一个公共类(public),且公共类的名称...

    java零基础学习视频篇+工程第二章

    - **01-03-09-位运算符.mp4**:这部分会探讨Java中的位运算,如位与、位或、位异或和位移操作,这些运算符在处理二进制数据时非常有用。 - **01-03-01-算术运算符.mp4**:视频将解释Java中的基本算术运算符,如加...

Global site tag (gtag.js) - Google Analytics