当前位置:首页 > 开发 > 编程语言 > Java > 正文

java 直观的位移运算例子

发表于: 2014-08-21   作者:DavidIsOK   来源:转载   浏览:
摘要:   java 位移运算,先出【运算结果】,不懂的可以运行程序:   6的二进制是: 110 6进行左移两位运算后结果是:11000,也就是24,可以看出来,正数的左移N位就是在右边末尾加N个0   -33的二进制是: 11111111111111111111111111011111 -33进行左移两位运算后结果是:11111111111111111111

 

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();
	}

}

 

 

java 直观的位移运算例子

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
文章看过后感觉受益匪浅,所以留下了以备温故:http://www.congmo.net/blog/2012/03/11/Long-ByteSh
“ < <”, “> > ”, “> > > ”在Java中是左移、有符号右移和无符号右移运算
描述:位移可以总结为四个字——左乘右除 公式描述: shifting k-bits to the right: O(i,j) = I(i,
一、简介 Java中所有的数据都是以二进制数据的形式进行计算的,即如果有一个int型变量,要采用位运
版权声明:可以任意转载,转载时请务必以超链接形式标明如下文章原始出处和作者信息及本声明 作者:
初学算法,肯定会编写排序算法 其中两个最为有名的就是冒泡排序和快速排序 理论上冒泡排序的时间复
基本数据类型 int n = 7, m = 2; double d = 7; n = n/m; //3 d /= m; //3.5 n--; //2 int a = 2 * n
//Java中的位运算 /*计算机由复杂电子元器件构成,一个电子元器件有带电和不带电的两种状态,1和0
一: 矩阵的加法与减法 规则:矩阵的加法与减法要求两个矩阵的行列完全相等,方可以完成两个矩阵的
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号