`
别惹Java
  • 浏览: 45661 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java位操作和逻辑操作

    博客分类:
  • Java
 
阅读更多
1.java的位运算符
/**
 * 计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码, 补码=反码+1。 在 二进制里,是用 0 和 1
 * 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。
 * 
 * @author Administrator
 * 
 */
public class ShiftOperator {

	public static void main(String[] args) {
		leftMove();
		rightMove();
		unSignRightMove();
	}

	/**
	 * 左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补 0)
	 * 
	 * 负数的情况:十进制如何转为二进制 1.先将-5的绝对值转换成二进制,即为0000 0101 2.然后求该二进制的反码,即为 1111 1010
	 * 3.最后将反码加1,即为:1111 1011
	 * Integer是32位(bit)的,所以结果是:11111111111111111111111111111011
	 */
	public static void leftMove() {
		System.out.println("左移运算符");
		int start_1 = 5;
		System.out.println(start_1 + ":" + Integer.toBinaryString(start_1));
		int end_1 = 5 << 2;
		System.out.println(end_1 + ":" + Integer.toBinaryString(end_1));

		int start_2 = -5;
		System.out.println(start_2 + ":" + Integer.toBinaryString(start_2));
		int end_2 = -5 << 2;
		System.out.println(end_2 + ":" + Integer.toBinaryString(end_2));
	}

	/**
	 * "有符号"右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数 若值为正,则在高位插入0;若值为负,则在高位插入1
	 */
	public static void rightMove() {
		System.out.println("(有符号)右移位运算符运算符");
		int start_1 = 5;
		System.out.println(start_1 + ":" + Integer.toBinaryString(start_1));
		int end_1 = 5 >> 2;
		System.out.println(end_1 + ":" + Integer.toBinaryString(end_1));

		int start_2 = -5;
		System.out.println(start_2 + ":" + Integer.toBinaryString(start_2));
		int end_2 = -5 >> 2;
		System.out.println(end_2 + ":" + Integer.toBinaryString(end_2));
	}

	/**
	 * 右移位运算符(>>>):零填充高位
	 */
	public static void unSignRightMove() {
		System.out.println("右移位运算符运算符");
		int start_1 = 5;
		System.out.println(start_1 + ":" + Integer.toBinaryString(start_1));
		int end_1 = 5 >>> 2;
		System.out.println(end_1 + ":" + Integer.toBinaryString(end_1));

		int start_2 = -5;
		System.out.println(start_2 + ":" + Integer.toBinaryString(start_2));
		int end_2 = -5 >>> 2;
		System.out.println(end_2 + ":" + Integer.toBinaryString(end_2));
	}
}


2.java逻辑操作符
/**
 * & 与;| 或;~ 非(也叫做求反);^ 异或
 * 
 * @author Administrator
 * 
 */
public class LogicOperator {

	public static final String INT_ZENO = "00000000000000000000000000000000";

	public static void main(String[] args) {
		operator_1();
		operator_2();
		operator_3();
		operator_4();
	}

	/**
	 * 两个都为 1时才为1,否则为0
	 */
	public static void operator_1() {
		System.out.println("与运算符(&)");
		int first_1 = 5;
		int second_1 = 3;
		System.out.println(first_1 + ":"
				+ getFullBinary(Integer.toBinaryString(first_1)));
		System.out.println(second_1 + ":"
				+ getFullBinary(Integer.toBinaryString(second_1)));
		int result_1 = 5 & 3;
		System.out.println(result_1 + ":"
				+ getFullBinary(Integer.toBinaryString(result_1)));

		int first_2 = -5;
		int second_2 = 3;
		System.out.println(first_2 + ":"
				+ getFullBinary(Integer.toBinaryString(first_2)));
		System.out.println(" " + second_2 + ":"
				+ getFullBinary(Integer.toBinaryString(second_2)));
		int result_2 = -5 & 3;
		System.out.println(" " + result_2 + ":"
				+ getFullBinary(Integer.toBinaryString(result_2)));
	}

	/**
	 * 只要有一个为1,结果为1
	 */
	public static void operator_2() {
		System.out.println("或运算符(|)");
		int first_1 = 5;
		int second_1 = 3;
		System.out.println(first_1 + ":"
				+ getFullBinary(Integer.toBinaryString(first_1)));
		System.out.println(second_1 + ":"
				+ getFullBinary(Integer.toBinaryString(second_1)));
		int result_1 = 5 | 3;
		System.out.println(result_1 + ":"
				+ getFullBinary(Integer.toBinaryString(result_1)));

		int first_2 = -5;
		int second_2 = 3;
		System.out.println(first_2 + ":"
				+ getFullBinary(Integer.toBinaryString(first_2)));
		System.out.println(" " + second_2 + ":"
				+ getFullBinary(Integer.toBinaryString(second_2)));
		int result_2 = -5 | 3;
		System.out.println(result_2 + ":"
				+ getFullBinary(Integer.toBinaryString(result_2)));
	}

	/**
	 * 1变为0,0变为1
	 */
	public static void operator_3() {
		System.out.println("非运算符(~)");
		int first_1 = 5;
		System.out.println(" " + first_1 + ":"
				+ getFullBinary(Integer.toBinaryString(first_1)));
		int result_1 = ~5;
		System.out.println(result_1 + ":"
				+ getFullBinary(Integer.toBinaryString(result_1)));
	}

	/**
	 * 两个相同时为1,不同时为0
	 */
	public static void operator_4() {
		System.out.println("异或运算符(^)");
		int first_1 = 5;
		int second_1 = 3;
		System.out.println(first_1 + ":"
				+ getFullBinary(Integer.toBinaryString(first_1)));
		System.out.println(second_1 + ":"
				+ getFullBinary(Integer.toBinaryString(second_1)));
		int result_1 = 5 ^ 3;
		System.out.println(result_1 + ":"
				+ getFullBinary(Integer.toBinaryString(result_1)));

		int first_2 = -5;
		int second_2 = 3;
		System.out.println(first_2 + ":"
				+ getFullBinary(Integer.toBinaryString(first_2)));
		System.out.println(" " + second_2 + ":"
				+ getFullBinary(Integer.toBinaryString(second_2)));
		int result_2 = -5 ^ 3;
		System.out.println(result_2 + ":"
				+ getFullBinary(Integer.toBinaryString(result_2)));
	}

	private static String getFullBinary(String binaryString) {
		return INT_ZENO.substring(binaryString.length()) + binaryString;
	}

}
分享到:
评论

相关推荐

    Java位运算和逻辑运算的区别实例

    在Java编程语言中,位运算和逻辑运算都用于处理布尔值和整数,但它们在实际操作和行为上有着显著的差异。理解这些差异对于优化代码和深入理解计算机底层工作原理至关重要。 首先,我们来看看逻辑运算符。逻辑运算符...

    《Java 工程师的编程逻辑》——用 java 看计算机世界

    本书不仅涵盖了Java的基础知识,还深入讲解了编程逻辑和设计原则,是Java初学者和进阶者提升技能的重要资源。 在Java的世界里,理解编程逻辑至关重要。这包括掌握基本语法、类与对象的概念、封装、继承和多态等面向...

    ACCP7.0使用Java理解程序逻辑教学PPT

    1. **Java语言基础**:首先,我们需要了解Java的基本语法,包括数据类型(如整型、浮点型、字符型、布尔型)、变量声明与赋值、运算符(算术、比较、逻辑、位操作等)以及控制流程语句(如if条件语句、switch选择...

    Accp6.0 S1 JAVA 理解程序逻辑 第4章

    6. **数组**:数组是存储相同类型元素的集合,学习如何声明、初始化和操作数组对于处理批量数据至关重要。 7. **异常处理**:Java的异常处理机制(try-catch-finally)使得程序能够优雅地处理错误,避免程序意外...

    S1-使用Java语言理解程序逻辑-第二章变量、数据类型和运算符

    运算符在Java中用于执行特定操作,如算术运算(加减乘除等)、比较运算(等于、不等于、大于、小于等)、逻辑运算(与、或、非等)和位运算(按位与、按位或、按位异或等)。运算符的应用使得我们可以基于变量的值...

    java位运算符之左移操作视频

    这些运算符在处理位级逻辑和数值计算时非常有用。 二、左移操作符() 左移操作符()将一个数的二进制表示向左移动指定的位数。左边移去的位用零填充,右边空出的位数则由零填充。这种操作相当于乘以2的幂次方。...

    java 逻辑运算符的资源

    8. **在位运算中的角色**:虽然主要讨论的是逻辑运算符,但值得注意的是,"&"和"|运算符"在位运算中也有作用,用于按位与和按位或操作,对二进制数据进行操作。 通过以上介绍,我们了解了Java中的逻辑运算符以及...

    java逻辑题

    在Java编程中,斐波那契数列是一个常见的逻辑题,其定义是每一个数字是前两个数字的和。题目中的代码示例展示了如何使用递归函数来计算斐波那契数列的第n项。例如,`method(30)`将返回斐波那契数列的第30个数字。 #...

    Java中位运算符在操作逻辑型数据时与逻辑运算符&&、-、!不同的测试

    Java中位运算符在操作逻辑型数据时与逻辑运算符&&、||、!不同的测试,测试结果逻辑运算符左侧的表达式会进行运算、右侧的不会,非运算一定会变;位运算符两侧都会变

    JAVA位运算.pdf

    ### JAVA位运算详解 在Java编程中,位运算是一门精细的艺术,涉及到对整数类型的二进制位进行直接操作。这些操作不仅能够优化代码执行效率,还常用于实现特定的算法需求。本文将深入探讨Java中的位运算,包括位...

    经典面试宝典 包含各类题型java +逻辑推理

    - **逻辑运算符**:`&`(按位与)、`|`(按位或)、`^`(按位异或)。 - **条件运算符**:`&&`(逻辑与)、`||`(逻辑或)。条件运算符支持短路运算,即左侧表达式已经确定整体结果的情况下,右侧表达式将不再执行。...

    java操作word文件工具类级dell文件

    Java操作Word文件主要涉及到的是对Microsoft Office文档的处理,这在很多企业级应用中非常常见,比如自动化报告生成、数据导入导出等。在Java中,由于Java本身并不直接支持与Windows API交互,因此需要借助第三方库...

    JAVA_API1.6文档(中文)

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    accp5.0使用Java语言理解程序逻辑(Logic Java)\Chapter2

    运算符在Java中用于执行各种计算和操作。算术运算符如`+`(加)、`-`(减)、`*`(乘)、`/`(除)和`%`(求余)用于数值运算。例如,`1000 * (1 + 5%)`可以计算出1000元一年后增加5%的利息后的总金额。赋值运算符`=...

    Java基础知识之数据类型和操作符

    Java是一种强类型语言,这意味着在Java中,每个变量都必须先声明其数据类型,然后才能使用。Java的数据类型可以分为两类:基本... :)和位操作符(&、|、^、~、、&gt;&gt;)。使用这些操作符时,需要注意它们的优先级和结合性

    java开发模拟鼠标键盘操作

    以上就是关于Java中模拟鼠标键盘操作的基础知识,通过结合这些API,开发者可以构建出复杂的人机交互逻辑,实现各种自动化任务。在实际项目中,还可以结合其他工具和框架,如Sikuli、AutoIt等,以提高模拟操作的灵活...

    java位运算.docx

    Java 位运算是一种底层操作,它直接作用于整数类型的二进制表示,常用于高效地处理数据。在Java中,所有的整数类型(byte, short, int, long)都是以补码形式存储的,其中最高位是符号位,0表示正数,1表示负数。...

    Java中的位运算

    ### Java中的位运算 #### 一、概述 位运算(Bitwise Operators)是计算机科学...通过上述示例和解释,我们可以看到位运算在Java中的应用及其背后的逻辑。理解这些基础知识对于深入学习Java以及优化代码具有重要意义。

    详解Java的按位操作符

    详解Java的按位操作符 Java的按位操作符是指在Java语言中...Java的按位操作符是Java语言中一个非常重要的概念,它们可以实现复杂的逻辑操作和数据处理。通过学习和掌握这些操作符,可以更好地掌握Java语言的编程技巧。

    十六进制字符串按位异或运算工具和java位异或运算

    此外,异或运算也常用于位操作,比如在编程中设置或清除某个位、反转位模式等。 总的来说,十六进制字符串的按位异或运算是一种基本的逻辑操作,它在编程和数据处理中扮演着不可或缺的角色。通过理解其原理并掌握在...

Global site tag (gtag.js) - Google Analytics