`
DavidIsOK
  • 浏览: 75563 次
社区版块
存档分类
最新评论

java 直观的位移运算例子

    博客分类:
  • java
阅读更多

 

java 位移运算,先出【运算结果】,不懂的可以运行程序:

 

6的二进制是: 110

6进行左移两位运算后结果是:11000,也就是24,可以看出来,正数的左移N位就是在右边末尾加N个0

 

-33的二进制是: 11111111111111111111111111011111

-33进行左移两位运算后结果是:11111111111111111111111101111100,也就是-132,可以看出来,负数的左移N位就是在右边末尾加N个0,为了保持位数不变,高位直接舍去

 

124的二进制是: 1111100

124进行右移两位位位运算后结果是:11111,也就是31可以看出正数右移就是在高位补0,然后为保持位数不变,低位舍去对应位数

 

-124的二进制是: 11111111111111111111111110000100

-124进行右移两位位位运算后结果是:11111111111111111111111111100001,也就是-31

 

124的二进制是: 1111100

124进行右移三位位移运算后结果是:1111,也就是15可以看出如果移位的位数过多会直接舍去最低位

 

-45的二进制是: 11111111111111111111111111010011

-45进行右移19位有符号位移运算后结果是:11111111111111111111111111111111,也就是-1,可以看出来,无符号负数位移是高位补1

-45进行右移19位 无符号 位移运算后结果是:1111111111111,也就是8191,可以看出来,无符号位移是即使是负数高位也是补0

 

代码如下:

 

package com.hxw.T2;

public class ShiftOperate {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 每个int整数是32位我们二进制用0000 0000 0000 0000 0000 0000 0000 0000 来表示0
		
		//0000 0000 0000 0000 0000 0000 0000 0110  表示6
		System.out.println("6的二进制是: "+Integer.toBinaryString(6));
		System.out.println("6进行左移两位运算后结果是:"+(Integer.toBinaryString(6<<2))+",也就是"+(6<<2)+",可以" +
				"看出来,正数的左移N位就是在右边末尾加N个0");
		System.out.println();
		
		System.out.println("-33的二进制是: "+Integer.toBinaryString(-33));
		System.out.println("-33进行左移两位运算后结果是:"+(Integer.toBinaryString(-33<<2))+",也就是"+(-33<<2)+",可以" +
				"看出来,负数的左移N位就是在右边末尾加N个0,为了保持位数不变,高位直接舍去");
		System.out.println();
		
		
		System.out.println("124的二进制是: "+Integer.toBinaryString(124)); 
		System.out.println("124进行右移两位位位运算后结果是:"+(Integer.toBinaryString(124>>2))+",也就是"+(124>>2)+"可以" +
				"看出正数右移就是在高位补0,然后为保持位数不变,低位舍去对应位数");
		System.out.println();
		
		System.out.println("-124的二进制是: "+Integer.toBinaryString(-124)); 
		System.out.println("-124进行右移两位位位运算后结果是:"+(Integer.toBinaryString(-124>>2))+",也就是"+(-124>>2));
		System.out.println();
		
		System.out.println("124的二进制是: "+Integer.toBinaryString(124)); 
		System.out.println("124进行右移三位位移运算后结果是:"+(Integer.toBinaryString(124>>3))+",也就是"+(124>>3)+"可以看出如果移位的位数过多会直接舍去最低位");
		System.out.println();
		
		System.out.println("-45的二进制是: "+Integer.toBinaryString(-45)); 
		System.out.println("-45进行右移19位有符号位移运算后结果是:"+(Integer.toBinaryString(-45>>19))+",也就是"+(-45>>19)+",可以看出来,无符号负数位移是高位补1");
		System.out.println("-45进行右移19位 无符号 位移运算后结果是:"+(Integer.toBinaryString(-45>>>19))+",也就是"+(-45>>>19)+",可以看出来,无符号位移是即使是负数高位也是补0");
		
		System.out.println();
	}

}

 

 

1
0
分享到:
评论

相关推荐

    JAVA MD5加密例子

    MD5算法的基本思想是将任意长度的输入(又叫做预映射pre-image)通过一系列的数学运算(包括位移、异或、加法等)转换成固定长度的输出,这个输出就是MD5摘要。MD5摘要通常是一个128位的二进制数,通常用32位的十六...

    有限单元法求解跨中的位移java实现

    总结来说,本项目提供了一个用Java实现的有限单元法求解跨中位移的例子,涉及到弹性力学、有限单元法的基本理论,以及Java编程中矩阵运算的实践。对于学习有限单元法和Java编程的初学者,这是一个很好的实践案例,有...

    java 2的10次方烟花

    对于位运算,2的10次方在二进制中是1000000000,这对于理解位移运算符(左移`和右移`&gt;&gt;`)来说是个很好的例子。例如,可以用左移运算符来快速将一个数乘以2的幂次: ```java int num = 1; num = num ; //相当于num ...

    Java试题.doc

    - **位移运算**:左移运算符 `和右移运算符 `&gt;&gt;` 用于将二进制位向左或向右移动。 - **自增自减运算**:前缀 `--` 或 `++` 改变自身值后立即返回新的值;后缀 `--` 或 `++` 先返回当前值,再改变自身值。 - **逻辑...

    Java基础练习题

    - **知识点**:这个例子展示了如何在Java中定义一个简单的类和主方法。`System.out.println()`用于在控制台上打印一行文本。如果主方法签名正确,那么这段代码会正常编译并运行,输出指定的字符串。 3. **Java...

    模2运算

    源码中可能会有使用模2运算的例子,例如检查一个数是否为偶数(如果一个数模2的余数为0,则它是偶数),或者在加密算法中使用模2运算来实现特定的位操作。工具方面,一些编程语言提供的内置函数或运算符,如Java的`%...

    [宫水三叶的刷题日记]:位运算1

    遍历数组nums,对每个元素进行位移运算,如果某一位为1,则对应的cnt[]数组位置加1。完成遍历后,对cnt[]中的每个元素取模3,然后根据结果重建只出现一次的数字。 具体实现中,我们使用一个变量ans初始化为0,然后...

    JAVA编写IC卡读写器例子

    在JAVA中处理这种数据转换通常会用到位运算符,如位移、与、或、异或等,以及数据类型转换,如byte、short、int之间的转换。此外,可能还需要理解特定的IC卡协议,比如ISO/IEC 7816系列标准,这些协议定义了卡片与...

    2019年Java题库(学生版).pdf

    - `String`类在Java中是不可变的,因此不能直接进行位移操作。所以选项B中的`s&gt;&gt;&gt;=2;`是非法的。 ### 16. private修饰符的作用范围 **题目**:当用private修饰的成员变量时,以下选项正确的是 **知识点**: - `...

    JAVA下两种方法实现CRC算法

    在JAVA中,可以使用位移和按位与、按位异或等操作来实现。这种方法的优点是无需预先准备,但缺点是计算效率相对较低,尤其是对于长数据流,计算过程会比较耗时。 3. **JAVA实现CRC的查表法** 查表法是预先计算出...

    【java面试题】java面试宝典基础知识版

    8. **2乘以8的计算**:最有效率的方式是直接使用`2 ,这是位移运算,相当于乘以2的3次方,即8。 9. **final关键字**:final修饰变量时,如果是基本类型,其值不能改变;如果是引用类型,变量指向的内存地址不能改变...

    Caesar_java_Caesar凯撒古典密码加密解密_

    处理后的新字符会保持在同一字母表区域内,因为我们使用了模26运算。对于非字母字符,我们直接添加到结果字符串中,不进行任何改变。 现在,我们可以通过实例化`Caesar`类并调用相应方法来进行加密和解密操作。例如...

    Java面试宝典2011最新版

    这些内容涵盖了Java的基础语法、逻辑运算、循环控制以及整型溢出等方面,是Java程序员面试准备的重要参考资料。通过深入理解这些知识点,可以帮助开发者更好地掌握Java语言的核心特性,提高编程技巧。

    SHA-1-Java.rar_SHA1_java 算法_java文件指纹

    SHA-1算法的原理是通过一系列复杂的数学运算,包括异或、位移、加法等操作,对输入数据进行处理,生成一个唯一的固定长度摘要。由于不同的输入会产生截然不同的输出,因此,只要文件内容有丝毫改变,经过SHA-1运算后...

    几个适合初学者的java小程序

    通过这个例子,我们可以看到Java程序的基本结构:`public class`声明一个公共类,`public static void main(String[] args)`则是程序的入口方法。`System.out.println()`则用于向控制台输出信息。 #### StudentTest...

    Java最新面试宝典

    ### Java最新面试宝典知识点详解 #### 一、Java基础部分 **1.1 & 和 && 的区别** - **相同点**: `&` 和 `&&` 都可以用作逻辑与运算符,表示逻辑与(AND...- 位移运算比乘法运算更快,特别是在处理大整数时效率更高。

    DES算法-Java实现

    - **F函数**:这是核心运算,F(Ri-1, Ki)将右半部分Ri-1与子密钥Ki进行异或操作,然后通过S盒(S-Box)和P盒(P-Box)进行非线性转换。 - **半行位移**:左半部分L(i-1)向右移动一位,右半部分Ri-1保持不变。 - *...

    crc-code.rar_crc java_纠错算法

    在这个例子中,`CRC32`类是Java内置的`java.util.zip`包的一部分,它提供了一个方便的API来计算CRC32校验码。`update()`方法接受字节数组作为输入,`getValue()`则返回计算得到的CRC值。 **应用和纠错能力:** CRC...

    2006年4月全国计算机等级考试二级JAVA笔试试题及答案.docx

    Java中的位移运算 题目给出的示例代码中,涉及到了位移运算。表达式 89 &gt;&gt; 1 的结果是 **A** 44。这是将89的二进制表示向右移动一位,相当于除以2。 ### 23. Applet中的绘图方法 题目提到,在Applet中显示文字、...

    Java程序设计基础:运算符与表达式.pptx

    在这个例子中,`b`被赋值为`3`,`c`又被赋值为`b`的值,即`3`。最后`a`被赋值为`c`的值,同样也是`3`。所以打印出来的结果是`3`。 #### 八、总结 本文详细介绍了Java中的运算符与表达式,包括不同类型的运算符以及...

Global site tag (gtag.js) - Google Analytics