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

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics