本文实例讲述了java基于移位操作实现二进制处理的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/** * @author openks * @since 2013-9-21 移位操作实例 */ public class TestDisplacement { /** * @param args */ public static void main(String[] args) { // 十进制数字2向左移3位 即 二进制的10向左移3位即10000 转换为十进制为2的4次方 即16 System.out.println( "2向左移三位:" + ( 2 << 3 )); System.out.println( "7向左移一位:" + ( 7 << 1 )); System.out.println( "7向右移一位:" + ( 7 >> 1 )); int n = 3 ; System.out.println( "2的" + n + "次方:" + ( int ) Math.pow( 2 , n)); System.out.println( "1向左移" + n + "位:" + ( 1 << n)); System.out.println( "可见2的N次方和1左移N位的值相等。。" ); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
/** * @author openks * @since 2013-9-21 * 二进制十进制的处理 可用于权限控制 可最多管理32项权限 */ public class TestBinary { /** * 获取十进制数字k转换为二进制后第index位的值 * @param k 十进制数字 * @param index 第index位 (从1开始) * @return 十进制数字转换为二进制后第index位的值 */ public static int getValue(Integer k, int index){ String string = Integer.toBinaryString(k); int len = string.length(); System.out.println( "二进制串为:" +string+ "\n共有" +len+ "位" ); if (index>len){ return 0 ; } else { return string.charAt(len-index)- '0' ; } } /** * 设置十进制数字k转换为二进制后第index位的值并返回处理后的十进制数字 * @param k 十进制数字k * @param index 第index位 (从1开始) * @param m 该index位上的值 只有0,1两种选择 * @return 处理后的十进制数字 */ public static int setValue(Integer k, int index,Integer m){ //相当于2的index-1次方 Integer t = 1 <<(index- 1 ); if (t>k){ if (m== 1 ){ return t+k; } else { return k; } } else { int m1 = getValue(k,index); if (m1== 0 ){ return k+t; } else { return k-t; } } } /** * @param args */ public static void main(String[] args) { int a= 25 ; //原来权限值 int i= 2 ; //要查看的位数 int d = 2 ; //要修改的位数 a= setValue(a, d, 1 ); //修改第d位的值为1 System.out.println( "第" +i+ "位的值为:" +getValue(a,i)); } } |
希望本文所述对大家java程序设计有所帮助。