Formato en coma flotante de simple precisión

El formato en coma (o punto) flotante de precisión simple es un formato de número de computador u ordenador que ocupa 4 bytes (32 bits) en su memoria y representa un amplio rango dinámico de valores mediante el uso de la coma flotante.

En la norma o estándar IEEE 754-2008 el formato de 32 bits de base 2 se conoce oficialmente como binary32, aunque se le llamaba single en la versión previa del estándar IEEE 754-1985. En los equipos más antiguos, se utilizaron diferentes formatos de coma flotante de 4 bytes, como ejemplo, el tipo de datos de precisión simple en el lenguaje de programación GW-BASIC era un formato de coma flotante de 32 bits MBF (Formato Binario de Microsoft).

Uno de los primeros lenguajes de programación en proporcionar tipos de datos de coma flotante de simple y doble precisión fue Fortran. Antes de la adopción generalizada del estándar IEEE 754-1985, la representación y las propiedades del tipo de datos simple y doble dependían del fabricante del equipo y el modelo de ordenador.

El formato binario en coma flotante de precisión simple se utiliza por abarcar un rango de valores más amplio respecto al formato de coma fija (del mismo ancho de bits), pero a costa de menor precisión. Un entero con signo de 32 bits puede tener un valor máximo de 231 - 1 = 2 147 483 647, mientras que el valor máximo representable en coma flotante del estándar IEEE 754 es (2-2−23) × 2127 ≈ 3,402823466×1038. Todos los números enteros con seis o menos dígitos decimales significativos se pueden convertir a un valor de coma flotante IEEE 754 sin pérdida de precisión, algunos números enteros hasta nueve dígitos decimales significativos pueden convertirse a un valor de coma flotante IEEE 754 sin pérdida de precisión, pero no es posible con los de más de nueve dígitos decimales significativos. Como ejemplo, el número entero de 32 bits 2 147 483 647 se convierte en 2 147 483 650 aplicando la norma IEEE 754.

El formato de precisión simple se conoce como REAL en Fortran,[1]float en C, C++, C#, Java,[2]Float en Haskell,[3]​ y, como Single en Delphi (Pascal), Visual Basic y MATLAB. Sin embargo, float en Python, Rubí, PHP, y OCaml y single en las versiones de Octave anteriores a la 3.2 se refieren a números de doble precisión. En la mayoría de las implementaciones de PostScript, la única precisión real es simple.

Descripción del formato

El estándar IEEE 754 especifica que un formato binary32 consta de:[4]

  • Bits de signo (S): 1 bit.
  • Exponente desplazado (E): 8 bits.
  • Significando o Mantisa (T): 24 bits (23 almacenados explícitamente).

Este formato proporciona una precisión de 6 a 9 dígitos decimales significativos. Si una cadena decimal de hasta 6 dígitos decimales significativos se convierte en formato IEEE 754 de precisión simple y luego se convierte de nuevo al mismo número de dígitos decimales significativos, la cadena final debe coincidir con el original y si un número de precisión simple IEEE 754 se convierte en una cadena decimal con al menos 9 dígitos decimales significativos y luego se convierte de nuevo a un número de precisión simple, entonces el número final debe coincidir con el original.[5]

El bit de signo (S) determina el signo del número, que también es el signo de la mantisa o significando. El exponente (E) es, tanto un número entero de 8 bits con signo en el rango de -126 a 127 (expresado en la forma de complemento a 2) como un entero sin signo (e) de 8 bits comprendido de 0 a 255 que es la forma sesgada aceptada en la definición del formato binary32 de IEEE 754. Si se utiliza el formato de número entero sin signo, el valor del exponente utilizado en la aritmética es el exponente desplazado por un sesgo (E). Para el caso del formato binary32, un valor de exponente desplazado de 127 representa el cero real (es decir, para que 2e-127 sea uno, "e" debe valer 127). El exponente desplazado (E=e-127) abarca desde −126 hasta +127 ya que los valores de −127 (todos ceros) y 128 (todos unos) son reservados para números especiales.

La mantisa real del formato incluye 23 bits de la fracción a la derecha de la coma binaria y un bit de encabezado implícito (a la izquierda de la coma binaria) con valor de "1" a menos que el exponente se almacene con sus bits en cero. Por lo tanto sólo 23 bits de la mantisa aparecen en el formato de la memoria, pero la precisión total es de 24 bits (equivalente a log10 (224) dígitos ≈ 7225 decimales). Los bits se establecen como sigue, para este ejemplo concreto:

El valor real asumido por un determinado dato en formato binary32 con un exponente sesgado (el número entero sin signo de 8 bits) y una fracción de 23 bits esː

donde:

  • (bits de la mantisa o significando)

por lo tanto:

Codificación del exponente

El exponente en los números binarios de precisión simple en coma flotante se codifica mediante una representación desplazada en binario, siendo +127 el desplazamiento cero; también conocido como sesgo de exponente en la norma IEEE 754. Los valores del exponente son establecidos asíː

  • Emin = -126
  • Emax = 127
  • Sesgo del Exponente = 127

Por lo tanto, con el fin de obtener el verdadero exponente como se define por la representación binaria desplazada, se tiene que restar el desplazamiento de 127 del exponente almacenado lo que equivale a escribirlo en complemento a dos.

Los valores de exponentes expresados en el rango de números en el sistema hexadecimal entre 0016 y FF16 se interpretan de forma especial como se indica en la siguiente tablaː

Exponente Significando cero Significando no-cero Ecuación
0016 cero, −0 números denormalizados
0116 a FE16 valor normalizado
FF16 ±infinito NaN (silencioso y señalizado) Sin ecuación

El valor mínimo positivo normalizado es de 2 −126 ≈ 1.18 × 10 −38 y el valor mínimo positivo denormalizado es 2 −149 ≈ 1,4 × 10 −45.

Ejemplos de conversión de números decimales a formato binary32

En general, se acude a la norma IEEE 754 en sí para la conversión estricta (incluyendo el comportamiento de redondeo) de un número real en su equivalente en formato binary32. Para convertir un número real decimal en uno de formato binary32 se debe seguir el siguiente procedimientoː[6]

  1. Si el número a analizar (N) es positivo, asignar a S=0 y, en caso contrario, S=1.
  2. Igualar N a 2x.
  3. Despejar la variable "x", aplicando logaritmos decimales o naturales a ambos lados de la ecuación.
  4. Tomar como valor aproximado al entero inmediatamente inferior y llamarlo "e".
  5. Tomar nuevamente el número decimal N e igualarlo a m*2e.
  6. Despejar "m" y quitarle la parte entera que siempre es "1". Este es el bit a la izquierda de la coma binaria que nunca se incluye en el número en como flotante.
  7. Tomar la fracción del resultado y convertirla en binario. A este valor llamarlo "T"
  8. Sumar a "e" el valor de 127 y convertir el resultado a binario llamándolo "E"
  9. Juntar los resultados de S, E y T que forman parte del número en formato binary32.

La ventaja de este procedimiento es que, en el paso 5, se obtiene de inmediato la mantisa, la cual se convertirá a binario, sin necesidad de convertir la parte entera, la cual siempre será "1". A continuación, se presentan ejemplos de conversión a formato binary32 de números reales decimales mayores que 1 tanto enteros, como con parte fraccionaria y un número pequeño mayor que cero y menor que 1. Con números negativos, la única diferencia en el proceso es la de hacer el bit de signo igual a "1".

Número real entero

Consideremos el número real entero 63. Aplicando el proceso descrito anteriormente, se obtiene:

Por tanto, el valor "e" será el entero inmediatamente inferior, el cual es 5. Nuevamente usamos 63 aplicando el paso 5 del procedimiento:

Ya que el exponente "e" es 5, se le suma el sesgo de 127 unidades, lo cual da 13210 equivalente a 100001002. La mantisa real consta de los 5 dígitos a la derecha de la coma (0,96875) la cual se convierte a binario hasta completar los 23 bits del campo T (111110000000000000000002). Uniendo los resultados, se consigue esta expresión:

La expresión hexadecimal, como es habitual, se obtiene a agrupando todos los bits en 8 conjuntos de 4 y convirtiendo cada uno en el carácter respectivo. En el caso de un número real con parte fraccionaria, se procede de igual manera, con la diferencia de que el valor decimal de la mantisa será convertido a binario de manera aproximada.

Número real grande en notación científica

Para números reales muy grandes en notación científica como 7,3491 x 1022, es aplicable el procedimiento descritoːjj

Redondeando al entero inferior más próximo, se obtiene e = 75. Ahora se calcula la mantisa:

La parte fraccionaria es por tanto 0,945290573 equivalente a 0,111100011111111010010002. Al exponente decimal 75 se le suman 127 unidades para obtener 202=110010102. Uniendo las cadenas numéricas, se logra la siguiente expresión en formato binary32ː

Número pequeño en notación científica

Consideremos el número decimal 1023 x 10−21. Nuevamente, aplicamos el procedimiento ya conocido. Igualando este número a 2x:

El entero próximo inferior de "x" es e=-70. Nuevamente usamos el número a analizar y lo igualamos a m*2e:

La parte fraccionaria de m (0,207745228) y se convierte a binario (0,001101010010111011001012) y al exponente e=-70 se le suma 127 y se le convierte a binario obteniéndose 001110012. Uniendo estas cadenas numéricas, se consigue la expresión en binary32:

Si el valor para "m" se hubiera redondeado a 1,2077 por ejemplo, habrían existido errores que son inherentes al formato binary32 ya que se pierde precisión aunque se usen menos bits para expresar cantidades decimales.

Ejemplos en precisión simple

Los ejemplos que siguen son expresiones en hexadecimal y binario de valores en coma flotante que incluyen el signo, el exponente desplazado y la mantisa o significando.


Los siguientes valores son el máximo y el menor valor finito expresable en formato de coma flotante


Las siguientes expresiones prueban la existencia de dos tipos de ceros en el formato binary32:


Estas expresiones representan los valores infinitos:


Conversión de binary32 a decimal

Para este ejemplo de conversión, se comienza con el número hexadecimal 41C80000, el cual es convertido a binario:

La cadena binaria debe ser dividida en tres partes: bit de signo (1 bit), exponente (8bits) y significando (23 bits).

  • Bit de signo= 0
  • Exponente: 1000 00112 = 131
  • Significando: 100 1000 0000 0000 0000 00002 = 48000016

Luego, se añade el bit implícito al significando:

  • Significando: 1100 1000 0000 0000 0000 00002

y se decodifica el valor del exponente restándole 127: 131 − 127 = 4

Cada uno de los 24 bits del significando (incluyendo el bit implícito), se multiplica por la potencia de 2 correspondiente:


En este ejemplo la mantisa o significando tiene tres bits en "1 lógico": bit I (bit implícito, que siempre es "1"), bit 22 y bit 19. Sumando las tres contribuciones de estos bits :

  • Significando decodificado: 1 + 0,5 + 0,0625 = 1,5625.

Este significando debe ser multiplicado por la potencia 4 de la base 2 para obtener el resultado final:

Límites de precisión sobre números enteros

La siguiente tabla indica como son representados los números dentro de los rangos indicados.

Rangos de enteros Representación de la mantisa
Exacta
o Redondeo a un múltiplo de 2
o Redondeo a un múltiplo de 4
o Redondeo a un múltiplo de
o Redondeo a un múltiplo de
o Redondeo a Infinito ()

Optimizaciones

El diseño del formato de coma flotante permite varias optimizaciones, resultantes de la fácil generación de una aproximación de un logaritmo binario desde una vista entera del patrón de bits sin procesar. La aritmética de números enteros y el desplazamiento de bits pueden producir una aproximación a la raíz cuadrada recíproca (raíz cuadrada inversa rápida), comúnmente requerida en gráficos computarizados.

Véase también

Referencias

  1. «REAL Statement». scc.ustc.edu.cn (en inglés). University of Science and Technology of China. Archivado desde el original el 24 de febrero de 2021. Consultado el 4 de marzo de 2017. 
  2. «Primitive Data Types (The Java™ Tutorials)». java.sun.com (en inglés estadounidense). Oracle Inc. Consultado el 4 de marzo de 2017. 
  3. «6 Predefined Types and Classes». www.haskell.org (en inglés). Consultado el 4 de marzo de 2017. 
  4. «IEEE Standard for Floating-Point Arithmetic» (en inglés). IEEE. Archivado desde el original el 6 de noviembre de 2016. Consultado el 4 de marzo de 2017. 
  5. William Kahan (1 de octubre de 1987). «Lecture Notes on the Status of IEEE Standard 754 for Binary Floating-Point Arithmetic» (en inglés). Consultado el 4 de marzo de 2017. 
  6. Antonio Bello. «Tutorías UNED - IEEE 754 - Ejemplos». Oviedo, España: Universidad de Oviedo. Consultado el 4 de marzo de 2017. 

Enlaces externos

Read other articles:

Islamic political party in Algeria This article is about the political party in Algeria whose abbreviation is Hamas. For the Palestinian organization, see Hamas. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Movement of Society for Peace – news · newspapers · books · scholar · JSTOR (March 2021) (Learn how...

 

Dieser Artikel erläutert den Baustoff Zement; für andere, abgeleitete Bedeutungen siehe Zement (Begriffsklärung). Zement ist als Baustoff seit der Antike in Gebrauch: die zur Zeit Kaiser Hadrians zwischen 125 n. Chr. und 128 n. Chr. fertiggestellte Zementkuppel des Pantheons in Rom war mehr als 1700 Jahre lang der größte Kuppelbau der Welt Ein zum Durchmischen vorbereiteter Haufen Sand (braun) und Zement (grau) In Säcke abgefüllter Zement in Tunesien Zement (über älteres Cement und c...

 

Iridium(IV) oxide Names Other names Iridium dioxide Identifiers CAS Number 12030-49-8 Y 3D model (JSmol) Interactive image ChemSpider 10605808 Y ECHA InfoCard 100.031.572 PubChem CID 82821 UNII CL6CQW9MWS Y CompTox Dashboard (EPA) DTXSID1051222 InChI InChI=1S/Ir.2O/q+4;2*-2 YKey: NSTASKGZCMXIET-UHFFFAOYSA-N YInChI=1/Ir.2O/q+4;2*-2Key: NSTASKGZCMXIET-UHFFFAOYAQ SMILES [Ir+4].[O-2].[O-2] Properties Chemical formula IrO2 Molar mass 224.22 g/mol ...

Ten artykuł dotyczy szermierza. Zobacz też: inne osoby o tym nazwisku. Jerzy Pawłowski Jerzy Pawłowski (1968) Data i miejsce urodzenia 25 października 1932 Warszawa Data i miejsce śmierci 11 stycznia 2005 Warszawa Wzrost 174 cm Dorobek medalowy Reprezentacja  Polska Igrzyska olimpijskie złoto Meksyk 1968 szermierka(szabla ind.) srebro Melbourne 1956 szermierka(szabla ind.) srebro Melbourne 1956 szermierka(szabla druż.) srebro Rzym 1960 szermierka(sza...

 

Mohammad FadjarDirjen Pothan KemhanPetahanaMulai menjabat 29 Maret 2023PendahuluDadang HendrayudhaKetua Lembaga Pengembangan Pendidikan dan Penjamin Mutu (LP3M) Unhan RIMasa jabatan28 September 2022 – 29 Maret 2023PendahuluAgus WinarnaPenggantiHendrawan Bayu PrewitoKepala Staf Divisi Infanteri 2/KostradMasa jabatan21 Januari 2022 – 28 September 2022PendahuluTjaturputra Gunadi GenahPenggantiPrimadi Saiful SulunKomandan Pusat Pendidikan TeritorialMasa jabatan9 April 20...

 

إد هاريس (بالإنجليزية: Ed Harris)‏  معلومات شخصية اسم الولادة إدوارد ألين هاريس الميلاد 28 نوفمبر 1950 (العمر 73 سنة)تينافلي، نيوجيرزي الإقامة تينافلي (نيوجيرسي)ماليبو، كاليفورنيالوس أنجلوس  مواطنة الولايات المتحدة  الزوجة أيمي ماديغن (1983-الآن) الحياة العملية المدرسة الأم ...

Former church-site in London 51°30′59.34″N 0°5′35.06″W / 51.5164833°N 0.0930722°W / 51.5164833; -0.0930722 Church in London, EnglandSt Mary AldermanburySt Mary Aldermanbury in 1904LocationLove Lane and Aldermanbury, LondonCountryEnglandDenominationAnglicanArchitectureDemolished1966 The blitzed church in situ in London, 1964 The church was rebuilt at Westminster College in Fulton, Missouri St Mary Aldermanbury was a parish church in the City of London first ...

 

2004 video gameBlinx 2Developer(s)ArtoonPublisher(s)Microsoft Game StudiosDirector(s)Takuya MatsumotoNaoto OhshimaProducer(s)Yoji IshiiProgrammer(s)Takuya MatsumotoArtist(s)Masamichi HaradaNoriko OmizoWriter(s)Soshi KawasakiComposer(s)Tomonori SawadaKeiichi SugiyamaPlatform(s)XboxReleaseNA: November 16, 2004JP: November 18, 2004EU: December 3, 2004Genre(s)PlatformMode(s)Single-player, multiplayer Blinx 2: Masters of Time and Space (released in Japan as Blinx 2: Battle of Time and Space) is a ...

 

Triumph TR2 Triumph TR2 de 1955 Datos generalesFabricante Standard Motor CompanyReino Unido Reino UnidoPeríodo 1953–55ConfiguraciónTipo Automóvil deportivoDimensionesLongitud 3835,4 mm[1]​Anchura 1397,0 mm[1]​Altura 1270,0 mm[1]​Distancia entre ejes 2235,2 mm[1]​Peso 952,5 kgPlanta motrizMotor 1991 cc Motor de cuatro cilindros en líneaMecánicaTransmisión manual de 4 velocidades[2]​Otros modelosPredecesor Triumph TR1 / 20TSSuc...

Food market The Milk MarketLocationMungret Street, Limerick, Republic of IrelandCoordinates52°39′49″N 8°37′19″W / 52.663653°N 8.622056°W / 52.663653; -8.622056Opening datepre-1800OwnerLimerick Market TrusteesGoods soldfood, crafts, clothing, health productsDays normally openFriday, Saturday, SundayNumber of tenants66ParkingCornmarket SquareWebsitewww.milkmarketlimerick.ie Exterior view of The Milk Market The Milk Market (Irish: Margadh an Bhainne)[1]...

 

Type of landscape design The Cerne Abbas Giant chalk figure, near the village of Cerne Abbas in Dorset, England, is made by a turf-cut. The Uffington White Horse at Uffington, Oxfordshire The 18th-century Westbury White Horse near Westbury, Wiltshire A hill figure is a large visual representation created by cutting into a steep hillside and revealing the underlying geology. It is a type of geoglyph usually designed to be seen from afar rather than above. In some cases trenches are dug and rub...

 

Indian film actor, producer and playback singer Aditya PancholiPancholi in 2012BornNirmal Pancholi (1965-09-12) 12 September 1965 (age 58)[1]Bombay, Maharashtra, IndiaEducationSt. Joseph's High SchoolOccupationsFilm actorproducerplayback singerYears active1985-2020Spouse Zarina Wahab ​(m. 1986)​Children2 (including Sooraj Pancholi) Aditya Pancholi (born 12 September 1965) is an Indian actor, producer and playback singer working in Hindi cinema. A...

International sports tournament 2003 Cricket World CupOfficial logoDates9 February 2003 – 23 March 2003Administrator(s)International Cricket CouncilCricket formatOne Day InternationalTournament format(s)Round-robin and KnockoutHost(s)South AfricaZimbabweKenyaChampions Australia (3rd title)Runners-up IndiaParticipants14Matches54Attendance626,845 (11,608 per match)Player of the series Sachin TendulkarMost runs Sachin Tendulkar (673)Most wickets Chaminda Vaas (23)← 19992007 ...

 

Iglesia de Nuestra Señora de la Asunción Monumento Histórico Nacional LocalizaciónPaís ArgentinaDivisión CórdobaDirección Córdoba, ArgentinaCoordenadas 31°25′00″S 64°11′05″O / -31.41666667, -64.18472222Información religiosaCulto Iglesia católicaDiócesis Arquidiócesis de CórdobaAdvocación Nuestra Señora de la AsunciónHistoria del edificioFundación 1582Datos arquitectónicosTipo CatedralEstilo arquitectura barrocaAño de inscripción 14 de mayo de 194...

 

RefrainChamber music by Karlheinz StockhausenCongresshalle, Berlin, where Refrain was premieredCatalogue11Composed1959 (1959)DedicationErnst BrücherPerformed2 October 1959 (1959-10-02)Scoringpianopercussionamplified celesta Refrain for three players (piano with woodblocks, vibraphone with alpine cowbells, and amplified celesta with antique cymbals) is a chamber music composition by Karlheinz Stockhausen, and is number 11 in his catalog of works. History Refrain was compos...

Japanese baseball player Baseball player Ryota KatsukiKatsuki with the Yomiuri GiantsPitcherBorn: (1982-07-27) July 27, 1982 (age 41)Kurume, Fukuoka, JapanBats: RightThrows: RightdebutSeptember 23, 2004, for the Osaka Kintetsu Buffaloes Teams Osaka Kintetsu Buffaloes (2004) Orix Buffaloes (2005–2012) Yomiuri Giants (2013–2016) Ryota Katsuki (香月 良太, Katsuki Ryota, born July 27, 1982 in Kurume, Fukuoka, Japan) is a Japanese former professional baseball pitcher. H...

 

This article contains text that is written in a promotional tone. Please help improve it by removing promotional language and inappropriate external links, and by adding encyclopedic text written from a neutral point of view. (July 2023) (Learn how and when to remove this template message)American comedian and country musician (born 1939) Gary Mule DeerMule Deer in 2009BornGary C. Miller (1939-11-21) November 21, 1939 (age 84)Deadwood, South Dakota, U.S.Occupation(s)Actor, comedian, musi...

 

Keuskupan ChelmsfordLokasiProvinsi gerejawiCanterburyKediakonan agungBarking, Chelmsford, Colchester, Harlow, Southend, Stansted, West HamStatistikParoki463[1]Jemaat588 (Hingga Agustus 2014[update][[Kategori:Articles containing potentially dated statements from Kesalahan ekspresi: Operator < tak terduga]])[2]Sekolah140[3]InformasiKatedralKatedral ChelmsfordKepemimpinan kiniUskupStephen Cottrell, Uskup ChelmsfordSitus webchelmsford.anglican.org Keuskupan...

В Википедии есть статьи о других людях с фамилией Кинни. Шон Кинниангл. Sean Howard Kinney Основная информация Дата рождения 27 мая 1966(1966-05-27) (57 лет) Место рождения Рентон, США Страна  США Профессии барабанщик Годы активности с 1978 Инструменты Ударная установка Жанры ал...

 

Коммунизм Теория и практика Марксизм Коммунистическое общество Мировой Коммуна Социалистическая революция Плановая экономика Каждому по труду Антикапитализм Безгосударственное общество Классовая борьба Диктатура пролетариата Коллективизм Коллективная собственно...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!