Maison >Java >javaDidacticiel >Introduction détaillée aux exemples de méthodes Java de traitement binaire basé sur des opérations de décalage

Introduction détaillée aux exemples de méthodes Java de traitement binaire basé sur des opérations de décalage

黄舟
黄舟original
2017-03-08 11:12:021286parcourir

Cet article présente principalement la méthode de traitement binaire de Java basée sur les opérations de décalage. Il analyse les techniques de traitement des opérations de décalage binaire de Java sous forme d'exemples. Les amis dans le besoin peuvent se référer à ce qui suit

Les exemples de cet article. sont expliqués Cette méthode introduit la méthode Java de traitement binaire basée sur les opérations de décalage. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

/**
 * @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)-&#39;0&#39;;
    }
  }
  /**
   * 设置十进制数字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));
  }
}


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn