PROG0454 - IEC units
Prefixes are often used with the units of digital information bytes, bits, en bits per second to indicate large quantities. Traditionally the SI multipliers kilo, mega, giga, terra etc. were used. However, in the computer industry they were used in a different manner than officially prescribed. Because storage capacity is often expressed in powers of 2 and $2^{10} = 1024$ is so close to 1000, it was decided it would be useful to call 1024 bytes a kilobyte, instead of 1000 bytes. This became confusing when storage capacity increased. A floppy disk of 1.44 megabyte, for example, does not have the capacity of $1.44 \times 1024 \times 1024$ byte, nor of $1.44 \times 1000 \times 1000$ byte, but of $1.44 \times 1024 \times 1000$ byte.
In 1998 the International Electrotechnical Commission (IEC) wanted to end the confusion by introducing a new standard (IEEE 1541-2002) for binary prefixes, causing the use of traditional prefixes kilo, mega, giga, tera, peta and exa to die out for powers of 2. So a megabyte is 1,000,000 bytes and 1,048,576 $(1024 \times 1024)$ bytes should now be called a mebibyte. The difference between the SI value and the real value increases alongside the powers, as can be concluded from the following table.
SI | IEC | ||||||
---|---|---|---|---|---|---|---|
kilo | K | $10^3$ | 1,000 | kibi | Ki | $2^{10}$ | 1,024 |
mega | M | $10^6$ | 1,000,000 | mebi | Mi | $2^{20}$ | 1,048,576 |
giga | G | $10^9$ | 1,000,000,000 | gibi | Gi | $2^{30}$ | 1,073,741,824 |
tera | T | $10^{12}$ | - | tebi | Ti | $2^{40}$ | - |
peta | P | $10^{15}$ | - | pebi | Pi | $2^{50}$ | - |
exa | E | $10^{18}$ | - | exbi | Ei | $2^{60}$ | - |
zetta | Z | $10^{21}$ | - | zebi | Zi | $2^{70}$ | - |
yotta | Y | $10^{24}$ | - | yobi | Yi | $2^{80}$ | - |
Input
The input consists of 4 integers, each on a separate line. These numbers express the number of bytes in SI units, and respectively represent the amount of gigabytes, megabytes, kilobytes and bytes. The last three values lie between 0 and 1023 (boundaries included).
Output
Write out the total amount of bytes described in the input in bytes (first line) and in IEC units (second line). The description in IEC units should respectively represent the number of gibibytes, mebibytes, kibibytes and bytes, of which the last three values should always lie between 0 and 1023 (boundaries included). Use the format of the following example as template to write out the output.
Example
Input:
2 980 259 6
Output:
2980259006b 2Gib, 794Mib, 201Kib, 190b
Voor de informatie-eenheden bytes, bits, en bits per seconde worden vaak voorvoegsels gebruikt om grote hoeveelheden te kunnen kwantificeren. Traditioneel werden hiervoor de SI-veelvouden kilo, mega, giga, terra etc. gebruikt. In de computerwereld werden ze echter anders gebruikt dan officieel voorgeschreven. Omdat opslagcapaciteiten vaak in machten van 2 uitgedrukt worden en $2^{10} = 1024$ zo dicht bij 1000 ligt, werd ooit bedacht dat het handig zou zijn niet 1000 byte maar 1024 byte een kilobyte te noemen. Dit werd verwarrend toen de opslagcapaciteiten groter werden. Zo heeft een floppy van 1,44 megabyte niet een capaciteit van $1,44 \times 1024 \times 1024$ byte, en ook niet van $1,44 \times 1000 \times 1000$ byte, maar van $1,44 \times 1024 \times 1000$ byte.
In 1998 werd door de International Electrotechnical Commission (IEC) besloten deze verwarring de wereld uit te helpen door een nieuwe standaard (IEEE 1541-2002) voor binaire voorvoegsels te maken. Sindsdien is het niet langer gewenst de gewone voorvoegsels kilo, mega, giga, tera, peta en exa te gebruiken voor machten van twee. Een megabyte is dus 1.000.000 bytes. Als men een hoeveelheid van 1.048.576 $(1024 \times 1024)$ bytes wil benoemen, dan heet dat nu een mebibyte. Het verschil tussen de SI-waarde en de reële waarde wordt groter bij hogere machten, zoals blijkt uit onderstaande tabel.
SI | IEC | ||||||
---|---|---|---|---|---|---|---|
kilo | K | $10^3$ | 1.000 | kibi | Ki | $2^{10}$ | 1.024 |
mega | M | $10^6$ | 1.000.000 | mebi | Mi | $2^{20}$ | 1.048.576 |
giga | G | $10^9$ | 1.000.000.000 | gibi | Gi | $2^{30}$ | 1.073.741.824 |
tera | T | $10^{12}$ | - | tebi | Ti | $2^{40}$ | - |
peta | P | $10^{15}$ | - | pebi | Pi | $2^{50}$ | - |
exa | E | $10^{18}$ | - | exbi | Ei | $2^{60}$ | - |
zetta | Z | $10^{21}$ | - | zebi | Zi | $2^{70}$ | - |
yotta | Y | $10^{24}$ | - | yobi | Yi | $2^{80}$ | - |
Invoer
De invoer bestaat uit 4 natuurlijke getallen die elk op een afzonderlijke regel staan. Deze getallen drukken een aantal bytes uit in SI-eenheden, en stellen respectievelijk het aantal gigabytes, megabytes, kilobytes en bytes voor. De laatste drie waarden liggen daarbij telkens tussen 0 en 1023 (grenzen inbegrepen).
Uitvoer
Schrijf het totaal aantal bytes dat omschreven wordt in de invoer uit in bytes (eerste regel) en in IEC-eenheden (tweede regel). De omschrijving in IEC-eenheden moet respectievelijk het aantal gibibytes, mebibytes, kibibytes en bytes weergeven, waarbij de laatste drie waarden telkens tussen 0 en 1023 (grenzen inbegrepen) moeten liggen. Gebruik het formaat uit onderstaand voorbeeld als template voor het uitschrijven van de uitvoer.
Voorbeeld
Invoer:
2 980 259 6
Uitvoer:
2980259006b 2Gib, 794Mib, 201Kib, 190b
Added by: | Peter Dawyndt |
Date: | 2014-01-27 |
Time limit: | 10s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |