Java移位运算之算术左移位

算术左移运算符

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

语法格式:
  需要移位的数字 << 移位的次数
  例如: 3 << 2,则是将数字3左移2位

package com.zzwx.test.shifting;

public class Main {

	public static void main(String[] args) {

		for (int p = 1; p < 4; p++) {
			System.out.println("////////////算术左移位 - " + p + "/////////////");
			for (int n = 1; n <= 4; n++) {
				System.out.println("需要移位的数字 : " + p + " \t 转换二进制 : "
						+ toBinaryString(p) + " \t 移位量 : " + n
						+ " \t 移位后的二进制 : "
						+ shiftToBinaryLeft(toBinaryString(p), n)
						+ " \t value : " + (p << n));
			}
			System.out.println("////////////算术左移位 - " + p + "/////////////");
		}
		System.out.println("算术左移位 ------>    p << n = p * 2");
		System.out.println("\n\n\n");
	}

	/**
	 * 获取当前数字的二进制
	 * 
	 * @param num
	 *            int数字
	 * @return 二进制字符
	 */
	public static String toBinaryString(int num) {
		return Integer.toBinaryString(num);
	}

	/**
	 * 通过移位量获取移位后的二进制
	 * 
	 * @param binaryStr
	 *            需要移位的二进制
	 * @param shift
	 *            偏移量
	 * @return 移位后的二进制
	 */
	public static String shiftToBinaryLeft(String binaryStr, int shift) {
		for (int i = 0; i < shift; i++) {
			binaryStr += "0";
		}
		return binaryStr;
	}

}

测试结果

////////////算术左移位 - 1/////////////
需要移位的数字 : 1 	 转换二进制 : 1 	 移位量 : 1 	 移位后的二进制 : 10 	 value : 2
需要移位的数字 : 1 	 转换二进制 : 1 	 移位量 : 2 	 移位后的二进制 : 100 	 value : 4
需要移位的数字 : 1 	 转换二进制 : 1 	 移位量 : 3 	 移位后的二进制 : 1000 	 value : 8
需要移位的数字 : 1 	 转换二进制 : 1 	 移位量 : 4 	 移位后的二进制 : 10000 	 value : 16
////////////算术左移位 - 1/////////////
////////////算术左移位 - 2/////////////
需要移位的数字 : 2 	 转换二进制 : 10 	 移位量 : 1 	 移位后的二进制 : 100 	 value : 4
需要移位的数字 : 2 	 转换二进制 : 10 	 移位量 : 2 	 移位后的二进制 : 1000 	 value : 8
需要移位的数字 : 2 	 转换二进制 : 10 	 移位量 : 3 	 移位后的二进制 : 10000 	 value : 16
需要移位的数字 : 2 	 转换二进制 : 10 	 移位量 : 4 	 移位后的二进制 : 100000 	 value : 32
////////////算术左移位 - 2/////////////
////////////算术左移位 - 3/////////////
需要移位的数字 : 3 	 转换二进制 : 11 	 移位量 : 1 	 移位后的二进制 : 110 	 value : 6
需要移位的数字 : 3 	 转换二进制 : 11 	 移位量 : 2 	 移位后的二进制 : 1100 	 value : 12
需要移位的数字 : 3 	 转换二进制 : 11 	 移位量 : 3 	 移位后的二进制 : 11000 	 value : 24
需要移位的数字 : 3 	 转换二进制 : 11 	 移位量 : 4 	 移位后的二进制 : 110000 	 value : 48
////////////算术左移位 - 3/////////////
算术左移位 ------>    p << n = p * 2 的n次方
时间: 2024-10-09 21:45:27

Java移位运算之算术左移位的相关文章

Java移位运算之算术右移位

算术左移运算符 >>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1. 语法格式: 需要移位的数字 >> 移位的次数 package com.zzwx.test.shifting; public class MainRight { public static void main(String[] args) { for (int p = 50; p < 55; p++) { System.out.println

Java中&#39;&amp;&#39;与、&#39;|&#39;或、&#39;^&#39;异或、&#39;&lt;&lt;&#39;左移位、&#39;&gt;&gt;&#39;右移位

1 public static void main(String[] args) { 2 /* 3 * &:与运算 4 * 全为1则为1,否则为0 5 */ 6 System.out.print(1 & 0); 7 System.out.print("--"); 8 System.out.print(1 & 1); 9 System.out.print("--"); 10 System.out.println(0 & 0); 11 /

移位运算、Arrays中的copyOf、java.util.AbstractCollection、linux命令之tail

移位运算:http://www.cnblogs.com/hongten/p/hongten_java_yiweiyunsuangfu.html. ---------- Arrays中的copyOf: ----------------------- jdk1.8源码之java.util.AbstractCollection : http://www.cnblogs.com/0xcafebabe/p/6659515.html, http://www.cnblogs.com/leipeng-whale

【原创】Java移位运算

学习移位运算,首先得知道参与移位运算的类型的位数,那先来复习下Java基础类型的占位数吧. Java基础类型 Java基础类型总结一览表 类型 二进制位数 最大值 最小值 初始化值 表示形式 带符号 char 8 127(2^7-1) -128(-2^7) 0 二进制补码 是 short 16 32767(2^15 - 1) -32768(-2^15) 0 二进制补码 是 int 32 2,147,485,647(2^31 - 1) -2,147,483,648(-2^31) 0 二进制补码 l

java 移位运算

版权声明:转载请注明出处:http://www.cnblogs.com/lkcc/ 请读者亲自试一试代码,以免文章有误而误解. 移位运算 :将整数转化为二进制(以补码的形式),按位平移. <<     左移 >>     右移 >>>   无符号右移 << 右移: 按位做平移,末位用0补上(正负数都一样) a << n; 如果 a 是  byte.short.int 类型 那么 a << n 就是  a << (n%

Java 位运算(移位、位与、或、异或、非)与逻辑运算

java 位运算包括:左移( << ).右移( >> ) .无符号右移( >>> ) .位与( & ) .位或( | ).位非( ~ ).位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符. 逻辑运算符&.&&.|.||: 一.逻辑&与短路&&的区别 总的来说区别是体现在,只有这两个运算符的左边为false的时候会有区别,看如下代码 1.逻辑&的运算 boolean a = tr

逻辑运算与移位运算

一.布尔代数:简单理解就是用数字0和1(即:二进制位)代表逻辑值真和假来进行逻辑推理基本原则的研究.是逻辑电路和逻辑运算的数学基础. 二.逻辑运算符:与.或.非.异或 一元运算符:非(NOT),只有一个操作数 二元运算符:与(AND).或(OR)和异或(XOR),有两个操作数 逻辑运算符真值表 NOT:对于输入x取反即可 AND:对于输入x和y只有都为1是x&y才为1,否则都为0,如果能确定第一个操作数是0,则无需计算第二个操作数,结果必然为0 OR:表示结果不是x就是y,两者二选一.对于操作数

大端/小端,高字节/低字节,高地址/低地址,移位运算

其实大端小端的概念比较好理解的,大端:数据的高字节存放在内存的低地址中. 数组的声明方式是从左往右,地址逐渐增大. int8_t a[] = { 1, 2, 3 }; for (int i = 0; i < 3; i++) printf("a[%d]: %p\n", i, &a[i]); a[0]: 0x7ffce52cf290 a[1]: 0x7ffce52cf294 a[2]: 0x7ffce52cf298 int8_t是<stdint.h>定义的跨平台数

关于对移位运算的理解

之前在<计算机组成原理>这门课中学习了很多,其中包括二进制数的移位运算.当时并不理解他们用来作甚,迷迷糊糊的状态,学了都不知道为什么要学.什么东西总是到了需要用到的时候,才明白,哦,原来乳齿啊!以下是我在java编程中对移位运算的理解和总结: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1.补码的表示需要满足如下要求. (1)正数的最高位为0,其余各位代表数值本身(二进制数). (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1. 一.算术移位: