您好,登錄后才能下訂單哦!
本文實例講述了java基于移位操作實現(xiàn)二進制處理的方法。分享給大家供大家參考,具體如下:
/** * @author openks * @since 2013-9-21 移位操作實例 */ public class TestDisplacement { /** * @param args */ public static void main(String[] args) { // 十進制數(shù)字2向左移3位 即 二進制的10向左移3位即10000 轉(zhuǎn)換為十進制為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 * 二進制十進制的處理 可用于權(quán)限控制 可最多管理32項權(quán)限 */ public class TestBinary { /** * 獲取十進制數(shù)字k轉(zhuǎn)換為二進制后第index位的值 * @param k 十進制數(shù)字 * @param index 第index位 (從1開始) * @return 十進制數(shù)字轉(zhuǎn)換為二進制后第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'; } } /** * 設(shè)置十進制數(shù)字k轉(zhuǎn)換為二進制后第index位的值并返回處理后的十進制數(shù)字 * @param k 十進制數(shù)字k * @param index 第index位 (從1開始) * @param m 該index位上的值 只有0,1兩種選擇 * @return 處理后的十進制數(shù)字 */ public static int setValue(Integer k,int index,Integer m){ //相當(dāng)于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;//原來權(quán)限值 int i=2;//要查看的位數(shù) int d = 2;//要修改的位數(shù) a= setValue(a, d, 1);//修改第d位的值為1 System.out.println("第"+i+"位的值為:"+getValue(a,i)); } }
PS:這里再為大家推薦幾款計算與轉(zhuǎn)換工具供大家參考使用:
在線任意進制轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/hexconvert
科學(xué)計算器在線使用_高級計算器在線計算:
http://tools.jb51.net/jisuanqi/jsqkexue
在線計算器_標(biāo)準(zhǔn)計算器:
http://tools.jb51.net/jisuanqi/jsq
希望本文所述對大家java程序設(shè)計有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。