一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

java基于移位操作实现二进制处理的方法示例

时间:2017-03-24 编辑:简简单单 来源:一聚教程网

 

 代码如下复制代码

/**

 * @author openks

 * @since 2013-9-21 移位操作实例

 */

publicclassTestDisplacement {

  /**

   * @param args

   */

  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位的值相等。。");

  }

}

/**

 * @author openks

 * @since 2013-9-21

 * 二进制十进制的处理 可用于权限控制 可最多管理32项权限

 */

publicclassTestBinary {

  /**

   * 获取十进制数字k转换为二进制后第index位的值

   * @param k 十进制数字

   * @param index 第index位 (从1开始)

   * @return 十进制数字转换为二进制后第index位的值

   */

  publicstaticintgetValue(Integer k,intindex){

    String string = Integer.toBinaryString(k);

    intlen = string.length();

    System.out.println("二进制串为:"+string+"\n共有"+len+"位");

    if(index>len){

      return0;

    }else{

      returnstring.charAt(len-index)-Ɔ'

    }

  }

 

 

 代码如下复制代码

  /**

   * 设置十进制数字k转换为二进制后第index位的值并返回处理后的十进制数字

   * @param k 十进制数字k

   * @param index 第index位 (从1开始)

   * @param m 该index位上的值 只有0,1两种选择

   * @return 处理后的十进制数字

   */

  publicstaticintsetValue(Integer k,intindex,Integer m){

    //相当于2的index-1次方

    Integer t =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;

      }

    }

  }

  /**

   * @param args

   */

  publicstaticvoidmain(String[] args) {

    inta=25;//原来权限值

    inti=2;//要查看的位数

    intd =2;//要修改的位数

    a= setValue(a, d,1);//修改第d位的值为1

    System.out.println("第"+i+"位的值为:"+getValue(a,i));

  }

}

 

热门栏目