本文實例講述了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程序設計有所幫助。