La formación de un patrón de bits de un número entero

Ashutosh Singh:

Necesito ayuda para diseñar código java para generar la matriz de bits para cualquier entero dado en forma siguiente:

23debe producir una salida como 1101011explicación (min longitud de la matriz):

posiciones se dan como 1 -2 4 -8 16 -32 ....

Así 1101011se puede evaluar como:

1*1 + 1*-2 + 0*4+ 1*-8 + 0*16 +1*-32 + 1*64 = 23
rplantiko:

Este es el llamado negabinary representación de los números (descrito por primera vez por Vittorio Grünwald en 1885). Ellos pueden ser codificados de una manera muy similar a la representación binaria de costumbre, solo se trabaja con -2 en lugar de 2 como base (código Java inspirado por el código C # en https://en.wikipedia.org/wiki/Negative_base ):

class EncodeNegaBinary {

  public static void main(String[] args) {

    int n=0,input=0;
    String result="";
    final String[] BITS = { "0","1" };

    if (args.length != 1) {
      System.err.println("Please enter an integer to be converted");
      return;
    } else {
      input = n = Integer.parseInt(args[0]);
    }

    while (n != 0) {
      int r = n%-2;
      n /= -2;
      if (r == -1) {
        r=1;
        n++;
      }
      result = BITS[r] + result;
    }

    System.out.printf( "%d -> %s\n", input, result);

  }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=179529&siteId=1
Recomendado
Clasificación