java基于移位操作实现二进制处理的方法示例
本文实例讲述了java基于移位操作实现二进制处理的方法。分享给大家供大家参考,具体如下:
/**
*@authoropenks
*@since2013-9-21移位操作实例
*/
publicclassTestDisplacement{
/**
*@paramargs
*/
publicstaticvoidmain(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));
intn=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位的值相等。。");
}
}
/**
*@authoropenks
*@since2013-9-21
*二进制十进制的处理可用于权限控制可最多管理32项权限
*/
publicclassTestBinary{
/**
*获取十进制数字k转换为二进制后第index位的值
*@paramk十进制数字
*@paramindex第index位(从1开始)
*@return十进制数字转换为二进制后第index位的值
*/
publicstaticintgetValue(Integerk,intindex){
Stringstring=Integer.toBinaryString(k);
intlen=string.length();
System.out.println("二进制串为:"+string+"\n共有"+len+"位");
if(index>len){
return0;
}else{
returnstring.charAt(len-index)-'0';
}
}
/**
*设置十进制数字k转换为二进制后第index位的值并返回处理后的十进制数字
*@paramk十进制数字k
*@paramindex第index位(从1开始)
*@paramm该index位上的值只有0,1两种选择
*@return处理后的十进制数字
*/
publicstaticintsetValue(Integerk,intindex,Integerm){
//相当于2的index-1次方
Integert=1<<(index-1);
if(t>k){
if(m==1){
returnt+k;
}else{
returnk;
}
}else{
intm1=getValue(k,index);
if(m1==0){
returnk+t;
}else{
returnk-t;
}
}
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
inta=25;//原来权限值
inti=2;//要查看的位数
intd=2;//要修改的位数
a=setValue(a,d,1);//修改第d位的值为1
System.out.println("第"+i+"位的值为:"+getValue(a,i));
}
}
PS:这里再为大家推荐几款计算与转换工具供大家参考使用:
在线任意进制转换工具:
http://tools.jb51.net/transcoding/hexconvert
科学计算器在线使用_高级计算器在线计算:
http://tools.jb51.net/jisuanqi/jsqkexue
在线计算器_标准计算器:
http://tools.jb51.net/jisuanqi/jsq
希望本文所述对大家java程序设计有所帮助。