complexity - ¿Cuál es el parámetro radix en Java y cómo funciona?
radix sort complexity (5)
Aquí,
public class Test {
public static void main(String[] args) {
System.out.println(Integer.parseInt("11", 16));
}
}
11 es un número basado en 16 y se debe convertir a 10, es decir, decimal.
So, integer of (11)16 = 1*16^1 +1*16^0 = 16+1 = 17
Entiendo que radix para la función Integer.parseInt()
es la base para convertir la cadena en. ¿No debería 11 base 10 convertida con una base / base 16 ser una B
lugar de 17
?
El siguiente código imprime 17 según el libro de texto:
public class Test {
public static void main(String[] args) {
System.out.println( Integer.parseInt("11", 16) );
}
}
Cuando realiza la operación ParseInt
con el radix, el 11 base 16 se analiza como 17, que es un valor simple. Luego se imprime como radix 10.
Usted quiere:
System.out.println(Integer.toString(11, 16));
Esto toma el valor decimal 11 (no tiene una base en este momento, como tener "once" sandías (una más que el número de dedos que tiene una persona)) y lo imprime con la raíz 16, lo que da como resultado B
Cuando tomamos un valor int
, se almacena como base 2 en la memoria física de la computadora (en casi todos los casos), pero esto es irrelevante, ya que las conversiones de análisis y cadena de secuencias funcionan con una base arbitraria (10 de forma predeterminada).
En realidad está tomando 11
en hexadecimal y convirtiéndolo a decimal. Entonces, por ejemplo, si tuvieras el mismo código pero con "A"
en la cadena, daría como resultado 10
.
La función actúa hacia atrás como piensas. Convierte "11" en la base 16 a la base 10, por lo que el resultado es 17.
Para convertir de base 10 a base 16 use
System.out.println(Integer.toString(11, 16));
La salida será b.