`

位运算符在Java编码中的两个应用

    博客分类:
  • Java
阅读更多

位运算符用于处理整型和字符型的操作数.位运算符是完全针对二进制位(bit)单位的操作.
下面介绍两种位运算符的巧妙应用!
1.位移运算(<<左移,>>右移,>>>无符号右移)
TIP:一個數左移n位,就是將這個數乘以2的n次方,一個數右移n位,就是將這個數除以2的n次方.
如y<<2与y*4的结果相同;y>>1的结果与y/2的结果相同.
下面是一个例子:位移运算实现数字乘以2的8次幂

public class ANumber {  
    public static void main(String[] args) {  
         int number = 16;// 定义整数变量  
      int result = number << 8;// 位移运算  
      System.out.println(number + "乘以2的8次幂等于=" + result);  
      }  
}  

结果:
16乘以2的8次幂等于=4096

2.异或运算实现变量值交换
TIP:变量的交换常见于数组排序算法中,当两个数组元素需要交换时,将创建一个临时变量来共同完成互换,
临时变量的创建增加了系统资源的消耗.如果需要交换的是两个整数类型的变量,那么就可以使用更高效的方法.
下面代码使用异或运算实现两个整数类型变量的高效交换,其中未使用临时变量.

异或,数学术语之一,是一个数学运算符。指的就是说两个值相异结果为真 。

import java.util.Scanner;  
  
public class VariableExchange {  
    public static void main(String[] args) {  
         Scanner scan = new Scanner(System.in); // 创建扫描器  
      System.out.println("请输入变量A的值");  
         long A = scan.nextLong(); // 接收第一个变量值  
      System.out.println("请输入变量B的值");  
         long B = scan.nextLong(); // 接收第二个变量值  
      System.out.println("A=" + A + "\tB=" + B);  
         System.out.println("执行变量互换...");  
         A = A ^ B; // 执行变量互换  
      B = B ^ A;  
         A = A ^ B;  
        System.out.println("A=" + A + "\tB=" + B);  
    }  
}  

结果是:
請輸入變量A的值:20
請輸入變量B的值:30
A與B交換前: A = 20 B = 30
執行A與B的交換...
A = 30 B = 20
分享到:
评论

相关推荐

    Java 关键字、标识符、注释、常量与变量、数据类型,算术、赋值、比较、逻辑、位、三元运算符和流程控制、break、continue

    char占两个字节,数字大小为0———216-1,是unicode编码。  字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。 Boolean占一个字节,其取值只有两个,true和false。 等等 详细介绍用法

    微软JavaScript手册

    按位异或运算符(^) 对两个表达式执行按位异或操作。 blink 方法 将 HTML 的 &lt;BLINK&gt; 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 &lt;B&gt; 标识添加到String 对象中的文本两端。 Boolean 对象 创建...

    JAVA基础之java的移位运算

    按位异或运算符“^”,只有在两个比较的位不同时其结果是 1。否则,结果是零。下面的例子显示了“^”运算符的效果。这个例子也表明了XOR 运算符的一个有用的属性。注意第二个运算数有数字1的位,42对应二进制代码的...

    学通Java的24堂课

    1.5.1 情景应用1——计算两个整数的和 19 1.5.2 情景应用2——输出当前日期 19 1.5.3 情景应用3——在控制台接收用户输入数字 20 1.5.4 情景应用4——计算用户输入数字的乘积 21 1.6 自我测试 22 1.7 行动指南 ...

    Java面试宝典(传说中的葵花宝典).doc

    补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。 备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解的透彻深入,可以回答一些相关的知识,...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    第3章 Java中的基本数据类型和运算符 33 教学视频:1小时5分钟 3.1 Java中的基本数据类型 33 3.1.1 基本数据类型——编程语言中的数据原子 33 3.1.2 Java中的基本上数据类型介绍 34 3.1.3 基本数据类型值域 34 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    第3章 Java中的基本数据类型和运算符 33 教学视频:1小时5分钟 3.1 Java中的基本数据类型 33 3.1.1 基本数据类型——编程语言中的数据原子 33 3.1.2 Java中的基本上数据类型介绍 34 3.1.3 基本数据类型值域 34 ...

    java综合试题(面试题)

    6、Java源程序在转换为机器语言执行过程中既有编译也有解释。 ( ) 7、// 是java的多行注释符。 ( ) 面向对象 3.Java 仅支持类间的单重继承。 ( ) 17.方法可以没有返回值,或有一个返回值,也可以有多个返回值。...

    java 面试题 总结

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...

    JAVA面试题最全集

    给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...

    java jdk实列宝典 光盘源代码

    15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

    超级有影响力霸气的Java面试题大全文档

     JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要...

    Java编程语言的基础知识作了一个较为全面的汇总-供大家学习研究参考

    4、编写第一个Java程序并运行 5、CLASSPATH指的是类加载路径 6、程序注释,对以后的所有代码都要进行注释,主页可以方便进行开发需求 7、标识符和关键字 8、Java数据类型的划分以及数据类型的操作 java数据类型的...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    现实世界中的对象具两个特征:状态和行为。例如:自行车有状态(传动装置、步度、 两个车轮和齿轮的数目等)和行为(刹车、加速、减速和换档等)。 其次,我们再来看看软件对象。软件对象是现实世界对象的模式化产物...

    编译原理课程设计 词法分析器 java版

    5. 拼由两个字符组成的运算符,如:&gt;=、等等,识别后将类别存放在SYM中。 6. 打印源程序,边读入字符边打印。 由于一个单词是由一个或多个字符组成的,所以在词法分析程序GETSYM中定义一个读字符过程GETCH。

Global site tag (gtag.js) - Google Analytics