¿Alguien puede decirme cómo puedo convertir este número de flotador: 12.25 a binario? Sé cómo convertir el "12" pero no el 0.25¿Cómo convertir el número de flotador a Binario?
Cualquier ayuda es muy apreciada. Gracias
¿Alguien puede decirme cómo puedo convertir este número de flotador: 12.25 a binario? Sé cómo convertir el "12" pero no el 0.25¿Cómo convertir el número de flotador a Binario?
Cualquier ayuda es muy apreciada. Gracias
Keep multiplicando el número después de decimal por 2 hasta que se convierte 1,0:
0.25*2 = 0.50
0.50*2 = 1.00
y el resultado es en orden inverso ser 0,01
Lo tengo, eso parece lógica ahora, gracias :) –
@Slim Black: Cuidado: eso funciona bien para números como 0.25, que tienen representaciones exactas en binario, pero no para números como 0.1, que no: 0.1 * 2 = 0.2, 0.2 * 2 = 0.4, 0.4 * 2 = 0.8, 0.8 * 2 = 1.6, 0.6 * 2 = 1.2, 0.2 * 2 = 0.4, ... Se repite para siempre, y el resultado es 0.0 (0011) (la parte entre paréntesis se repite). –
@Slim Black: Y tenga en cuenta que para implementar esto correctamente mediante programación, necesitará una aritmética decimal: consulte mi artículo http://www.exploringbinary.com/base-conversion-in-php-using-bcmath/, específicamente la sección dec2bin_f().) –
(d significa decimal, b significa binario)
Sí, gracias por su respuesta :) –
¿Qué pasa si mi flotador es 5.1? Haciendo los pasos tuyos, entré en un ciclo infinito, ¡por favor ayuda! – nautilusvn
@nautilusvn: como no hay una potencia de 2 que también sea un múltiplo de 10, ese número tiene una secuencia infinita de dígitos. es posible que desee abortar su cálculo en alguna parte. – comonad
x = float(raw_input("enter number between 0 and 1: "))
p = 0
while ((2**p)*x) %1 != 0:
p += 1
# print p
num = int (x * (2 ** p))
# print num
result = ''
if num == 0:
result = '0'
while num > 0:
result = str(num%2) + result
num = num/2
for i in range (p - len(result)):
result = '0' + result
result = result[0:-p] + '.' + result[-p:]
print result #this will print result for the decimal portion
OP preguntó cómo hacerlo manualmente. –
quizás también desee agregar la referencia de dónde lo obtuvo. este código python me resulta familiar. –
Considérese a continuación ejemplo
Consideraremos el entero y la parte fraccionaria por separado.
The integral part is easy, 2 = 10.
Para la parte fraccionaria:
0.625 × 2 = 1.25 1 Generate 1 and continue with the rest.
0.25 × 2 = 0.5 0 Generate 0 and continue.
0.5 × 2 = 1.0 1 Generate 1 and nothing remains.
Así 0,625 = 0,101, y 2,625 = 10,101.
Vea el enlace this para obtener más información.
El valor de flotación se almacena en formato IEEE 754, por lo que no podemos codificar directamente como entero, char a binario. Pero podemos convertir float en binario a través del puntero.
main()
{
float a=7.5;
int i,*p; p=&a;
for (sizeof(int)*8-1;i>=0;i--)
printf("%d",(*p)>>i&1);
}
OUTPUT::0 10000001 11100000000000000000000---space for better clarification not included in part of the program.
Sé que es viejo, pero ¿cuál es el valor de ** i ** aquí? – Michi
Manualmente :) Puedo hacerlo programáticamente después de eso. –
¿Quieres obtener '1100.01'? – SLaks
Sí :) Necesito saber cómo calcular el 0.25 a binario –