本文实例讲述了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程序设计有所帮助。