//将n左移m位 int byte_to_left_move(int n , int m) { int i , ret = 1 ; if(n == 0 || n < 0) { return ; } if(n == 1) { for(i = 0 ; i < m ; i++) ret *= n * 2 ; } if(n > 1) { for(i = 0 ; i < m ; i++) ret *= n ; } return ret ; } //将n右移m位 int byte_to_rig
左移右移的能够使得数字*2或者/2 那*3怎么办,就左移一位然后再+ 经典面试题: 1.交换2个数,不用temp a=10 b=12 1.1 a = a + b = 22 b = a - b = 10 a = a - b =10 1.2 位运算 ^(异或) a=1010 b = 1100 a = a ^ b =0110 b = a ^ b =1010 a = a ^ b = 1100
java移位运算符:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则 按二进制形式把所
public class test{ public static void main(String[] args) { int m = 9; int n = m >> 3; int p = 8; int q=p <<2; System.out.println("m>>3 = "+ n); System.out.println("p<<3 = "+ q); } } 结果 m>>3 = 1 p<<3
在阅读源码的过程中,经常会看到这些符号<< ,>>,>>>,这些符号在Java中叫移位运算符,在写代码的过程中,虽然我们基本上不会去写这些符号,但需要明白这些符号的运算原理,比如HashMap中有以下代码: static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;//左移 static final int hash(Object key) { int h; return (key == null) ? 0
逻辑运算: 与运算&:与0清零 清零用与运算 或运算 |:或1置一 置一用或运算 异或 ^:不同为1 /*****单个寄存器清零置一******************************************************** int a =0x00000000; int b = 0xffffffff; //默认是32位寄存器 1.让第三位置一 a | 0x8 ==> a = a | (0x1<<3) 2.让第三位清零 1111 111