이 글에서는 주로 자바의 시프트 연산 기반 이진 처리 방식을 소개하며, 자바의 이진 시프트 연산 처리 기법을 예제 형식으로 분석합니다. 필요한 친구는 다음을 참고하세요. 이 방법은 시프트 연산을 기반으로 하는 Java의 바이너리 처리 방법을 소개합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
/** * @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位的值相等。。"); } }
/** * @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 메소드 예제에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!