Foros del Web » Programando para Internet » PHP »

Cómo escribir los numeros de [0] a [256]?, (En octal?)

Estas en el tema de Cómo escribir los numeros de [0] a [256]?, (En octal?) en el foro de PHP en Foros del Web. Hola, en efecto no se me ocurre cómo puede hacerse eso. El numero 0 es 00000000 El numero 1 es 00000001 El numero 2 es ...
  #1 (permalink)  
Antiguo 11/06/2005, 06:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 1 mes
Puntos: 22
Cómo escribir los numeros de [0] a [256]?, (En octal?)

Hola,

en efecto no se me ocurre cómo puede hacerse eso.

El numero 0 es 00000000
El numero 1 es 00000001
El numero 2 es 00000010

Ahora, cómo hacerlos todos hasta el 256 ?
  #2 (permalink)  
Antiguo 11/06/2005, 09:51
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 6 meses
Puntos: 3
esto no es octal, es binario

la forma de hacerlo es la siguiente, cada cifra (de las 8 que hay) toma el valor 2^n de derecha a izquierda.

es decir los valores para 8 dígitos en binario serian:

128 64 32 16 8 4 2 1

para construir cualquier numero tienes que asignar "1" o "0" a cada una de las cifras de manera que sumen el número que deseas obtener

por ejemplo el número 7 es igual a 4+2+1 por lo tanto su valor en binario es:
00000111

el 234 es 128 + 64 + 32 + 8 + 2 por lo que el número binario seria:

11101010

Me explico?

Un saludo
  #3 (permalink)  
Antiguo 11/06/2005, 09:59
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
No está de más la explicación, pero PHP ya trae una función nativa que hace esa transformación:
http://www.php.net/decbin

Saludos
  #4 (permalink)  
Antiguo 11/06/2005, 20:15
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 1 mes
Puntos: 22
Gracias, tonces eso no es octal?

Carambas! y como es 1 en octal?
Mejor, como es 25 en octal?

De todas formas, no logro el proposito aunque el avance es grande!.

Lo + que he logradoi es:
Código PHP:
<table border="1">
<?php
    
for($i=0;$i<257;$i++)echo "\r\n\t<tr>\r\n\t  <td>$i</td>\r\n\t  <td>".decbin($i)."</td></tr>";
?>
</table>
Pero es que me gustaria imprimir los numeros como dicen los manuales, es decir:

El numero 0 es 00000000
El numero 1 es 00000001
El numero 2 es 00000010

Y no esta sucediendo...

alguna idea?
  #5 (permalink)  
Antiguo 11/06/2005, 21:42
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
No sé si exista alguna función nativa para hacer eso... voy a investigar.
Mientras tanto, puedes utilizar una función hecha a mano. No le he probado, así que es posible que tenga algún error:
Código PHP:
function completar_ceros($numero$cantidad_cifras=8){
    
$ceros '';
    
$faltan $cantidad_cifras strlen($numero);
    for(
$i=1$i<=$faltan$i++){
        
$ceros .= '0';
    }
    
$numero_completo $ceros.$numero;
    return 
$numero_completo;

Para utilizarla, simplemente haces:
Código PHP:
<?php
    
for($i=0;$i<257;$i++)echo "\r\n\t<tr>\r\n\t  <td>$i</td>\r\n\t  <td>".completar_ceros(decbin($i))."</td></tr>";
?>
Saludos
  #6 (permalink)  
Antiguo 12/06/2005, 00:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 7 meses
Puntos: 102
Cita:
Iniciado por Anarko
Carambas! y como es 1 en octal?
Mejor, como es 25 en octal?
1 en octal será 1 (y será 1 en cualquier base).
25 en octal =
25/8= 3 -> modulo 1
Entonces 25 = 31 ... es básico, busca sobre sistema numéricos... Básicamente todo número lo divides por la base y siempre que el módulo (residuo) sea mayor o igual que la base repites la operación, solo que "tomando como numero el residuo".... el resultado será, desde el último residuo hasta el primer cociente obtenido, osease otro ciclo pero inverso... definitivamente no soy bueno explicando... pero ni es mi función ni es el tema aquí... son cuestiones matemáticas...

Ahora bien... si es solo para mostrar un resultado ¿por qué no usar printf()?... sería algo como:
Código PHP:
echo "<table><tr><td> Número </td><td> Binario </td><td> Octal </td></tr>";
// :-D de una vez.. para que comparen
for($i=0;$i<257;$i++)
    
printf("<tr><td>$i</td><td>%08b</td><td>%08o</td></tr>"$i$i);
// igual en vez del $i directo ocupar %d y añadir $i como argumento
echo "</table>"
Saludos!
se me olvidaba: www.php.net/printf
.... y... creo es obvio que puedes crear cualquier sistema numérico en cualquier base.. pero ¿qué pasa cuando la base es superior de 9???... se usan letras... he ahí el sistema hexadecimal (base 16) .. ¿que pasa si se terminan la letras??... .. pués usa el sistema científico!!!

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 14:32.