(6)位运算
2017-07-03 11:24
86 查看
一、
<< >>
正数位移例子(补0)
例1:3<<2=12 int 类型为8个字节即32位 3的二进制位向左移2位,左边最高两位去掉,右面补两个零
0000-0000 0000-0000 0000-0000 0000-0011(下去)
0000-0000 0000-0000 0000-0000 0000-1100(添上)
例2:6>>2=1 6的二进制位向右移2位,右边最低两位去掉,左面补两个零
0000-0000 0000-0000 0000-0000 0000-0110(下去)
0000-0000 0000-0000 0000-0000 0000-0001(添上)
负数是正数的二进制取反得到的(补1),其他一样
规律:>>:最高位补什么由原数据的最高位值而定
最高位为0,右以后,用0补空位
最高位为1,右以后,用1补空位
>>>无论最高位,移后用0补
正数最高位补0,负数最高位补1
向左移n位 <=> x *2^n
向右移n位 <=> x /2^n (小数点后面舍弃)
2)& |
例子:6&3=2
110
&011
--------------
010
二、应用1:获取每四位的16进制数
<< >>
正数位移例子(补0)
例1:3<<2=12 int 类型为8个字节即32位 3的二进制位向左移2位,左边最高两位去掉,右面补两个零
0000-0000 0000-0000 0000-0000 0000-0011(下去)
0000-0000 0000-0000 0000-0000 0000-1100(添上)
例2:6>>2=1 6的二进制位向右移2位,右边最低两位去掉,左面补两个零
0000-0000 0000-0000 0000-0000 0000-0110(下去)
0000-0000 0000-0000 0000-0000 0000-0001(添上)
负数是正数的二进制取反得到的(补1),其他一样
规律:>>:最高位补什么由原数据的最高位值而定
最高位为0,右以后,用0补空位
最高位为1,右以后,用1补空位
>>>无论最高位,移后用0补
正数最高位补0,负数最高位补1
向左移n位 <=> x *2^n
向右移n位 <=> x /2^n (小数点后面舍弃)
2)& |
例子:6&3=2
110
&011
--------------
010
二、应用1:获取每四位的16进制数
/* * 要获取下一个四位 */ int temp1; temp1=60>>4;//右移四位 temp=temp1&15;//相当于存放下四位的值 System.out.println("下四位对应的数值为:"+temp); System.out.println("d的后四位对应的ASCII码英文为:"+(temp>9?(char)temp:temp));//通过三位运算符判断是否要转换为字母,若小于9,不用转换为字母应用2:输出某数的二进制表示
/* * 输出60的二进制表示 * 步骤: *1、通过与运算得到每位的二进制是0或者1 *2、将原数每次右移1位 *3、将得到的数组倒置输出 */ int count=0; int[]ar=new int[32]; while(count<32) { temp=d&1; ar[count]=temp;//将与后的每一位存放在数组中 //System.out.print(temp); count++; d=d>>1; } for(int i=ar.length-1;i>=0;i--)//倒置数组,因为是从最低位存的,正常显示二进制应该从最高位开始显示 { System.out.print(ar[i]); }
相关文章推荐
- 位运算
- 【位运算】二进制中1的个数
- Codeforces 627A XOR Equation【位运算实现加法】
- UVA 1326 Jurssic Remains(位运算)
- js中的位运算
- Java 位运算(与、或、非、异或)
- Ext4使用总结(一)解除小数位运算溢出
- NOIP模拟题 [位运算][生成树]
- Java基础: 位运算 << >> >>>
- 位运算
- java学习-位运算
- N皇后 (位运算)
- [LeetCode] Sum of Two Integers(用位运算实现加法)
- 位运算
- hduoj-5969【位运算】【贪心】
- 位运算1
- ZOJ—3870 (位运算)
- php的位运算详解
- java 位运算中移动位数超过数据长度和右移的两种不同方式
- 补码与位运算