java基于移位操作實(shí)現(xiàn)二進(jìn)制處理的方法示例
本文實(shí)例講述了java基于移位操作實(shí)現(xiàn)二進(jìn)制處理的方法。分享給大家供大家參考,具體如下:
/**
* @author openks
* @since 2013-9-21 移位操作實(shí)例
*/
public class TestDisplacement {
/**
* @param args
*/
public static void main(String[] args) {
// 十進(jìn)制數(shù)字2向左移3位 即 二進(jìn)制的10向左移3位即10000 轉(zhuǎn)換為十進(jì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("可見(jiàn)2的N次方和1左移N位的值相等。。");
}
}
/**
* @author openks
* @since 2013-9-21
* 二進(jìn)制十進(jìn)制的處理 可用于權(quán)限控制 可最多管理32項(xiàng)權(quán)限
*/
public class TestBinary {
/**
* 獲取十進(jìn)制數(shù)字k轉(zhuǎn)換為二進(jìn)制后第index位的值
* @param k 十進(jìn)制數(shù)字
* @param index 第index位 (從1開(kāi)始)
* @return 十進(jìn)制數(shù)字轉(zhuǎn)換為二進(jìn)制后第index位的值
*/
public static int getValue(Integer k,int index){
String string = Integer.toBinaryString(k);
int len = string.length();
System.out.println("二進(jìn)制串為:"+string+"\n共有"+len+"位");
if(index>len){
return 0;
}else{
return string.charAt(len-index)-'0';
}
}
/**
* 設(shè)置十進(jìn)制數(shù)字k轉(zhuǎn)換為二進(jìn)制后第index位的值并返回處理后的十進(jìn)制數(shù)字
* @param k 十進(jìn)制數(shù)字k
* @param index 第index位 (從1開(kāi)始)
* @param m 該index位上的值 只有0,1兩種選擇
* @return 處理后的十進(jìn)制數(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;//原來(lái)權(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:這里再為大家推薦幾款計(jì)算與轉(zhuǎn)換工具供大家參考使用:
在線任意進(jìn)制轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/hexconvert
科學(xué)計(jì)算器在線使用_高級(jí)計(jì)算器在線計(jì)算:
http://tools.jb51.net/jisuanqi/jsqkexue
在線計(jì)算器_標(biāo)準(zhǔn)計(jì)算器:
http://tools.jb51.net/jisuanqi/jsq
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
SpringBoot整合Thymeleaf與FreeMarker視圖層技術(shù)
在目前的企業(yè)級(jí)應(yīng)用開(kāi)發(fā)中,前后端分離是趨勢(shì),但是視圖層技術(shù)還占有一席之地。Spring Boot 對(duì)視圖層技術(shù)提供了很好的支持,福安防推薦使用的模板引擎是Thymeleaf,不過(guò)想FreeMarker也支持,JSP技術(shù)在這里并不推薦使用2022-08-08
Spring Boot實(shí)戰(zhàn)之靜態(tài)資源處理
這篇文章主要介紹了Spring Boot實(shí)戰(zhàn)之靜態(tài)資源處理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
Java中synchronized?的4個(gè)優(yōu)化技巧
本文主要介紹了Java中synchronized的4個(gè)優(yōu)化技巧,synchronized在JDK?1.5?時(shí)性能是比較低的,然而在后續(xù)的版本中經(jīng)過(guò)各種優(yōu)化迭代,它的性能也得到了前所未有的提升,下文更多相關(guān)資料需要的小伙伴可以參考一下2022-05-05
springboot DTO字符字段與日期字段的轉(zhuǎn)換問(wèn)題
這篇文章主要介紹了springboot DTO字符字段與日期字段的轉(zhuǎn)換問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
基于Spring Security的Oauth2授權(quán)實(shí)現(xiàn)方法
這篇文章主要介紹了基于Spring Security的Oauth2授權(quán)實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
關(guān)于Idea創(chuàng)建Java項(xiàng)目并引入lombok包的問(wèn)題(lombok.jar包免費(fèi)下載)
很多朋友遇到當(dāng)idea創(chuàng)建java項(xiàng)目時(shí),命名安裝了lombok插件卻不能使用注解,原因有兩個(gè)大家可以參考下本文,本文對(duì)每種原因分析給出了解決方案,需要的朋友參考下吧2021-06-06

