Les 2: Gegevensvoorstelling There are only 10 different kinds of people in the world: those who know binary and those who don't. - Anoniem ca2-1 Overzicht • • • • • • • Logische operaties op bits en bitstrings Hexadecimale representatie Voorstelling van natuurlijke getallen Voorstelling van gehele getallen Voorstelling van reële getallen Voorstelling van lettertekens Voorbeelden ca2-2 Eenheid van informatie binary digit of bit 0 of 1 “vals” of “waar” “false” of “true” George Boole (1815-1864) ca2-3 dyadische operaties Logische operaties O1 0 0 1 1 O2 0 1 0 1 en 0 0 0 1 O1 0 0 1 1 O2 0 1 0 1 of 0 1 1 1 O1 0 0 1 1 O 0 1 niet 1 0 O2 0 1 0 1 eof 0 1 1 0 ca2-4 Bitsgewijze logische operaties: en en 0100 0101 0000 1110 masker 0000 0100 en 0000 1110 0100 0101 0000 0100 ca2-5 Bitsgewijze logische operaties: of of 0100 0101 0000 1110 masker 0100 1111 of 0000 1110 0100 0101 0100 1111 ca2-6 Bitsgewijze logische operaties: exclusieve of (eof) eof eof 0100 0101 0000 1110 masker 0100 1011 0000 1110 0100 0101 eof eof = modulo-2 optelling eof = oneven aantal 1-bits 0000 1110 0100 0101 0100 1011 ca2-7 Voorbeelden 0100 0101 0000 1110 0000 0100 0100 0101 en 1111 0001 0100 0001 0100 0101 of 1111 0001 1111 0101 0100 0101 of 0000 1110 0100 1111 en eof 0100 0101 0100 0101 ? ca2-8 Alle boolese functies van 2 veranderlijken O1 0 0 1 1 O2 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 en “0” O1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 eof of O2 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 en eof of 1 1 1 0 O2 A B A of B O1 “1” ca2-9 Overzicht • • • • • • • Logische operaties op bits en bitstrings Hexadecimale representatie Voorstelling van natuurlijke getallen Voorstelling van gehele getallen Voorstelling van reële getallen Voorstelling van lettertekens Voorbeelden ca2-10 Hexadecimale notatie 4 bits = 1 nibble: in C: z = 0x15 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 A B C D E F ca2-11 Octale Notatie 000 001 010 011 100 101 110 111 0 1 2 3 4 5 6 7 in C: z = 015 ca2-12 Byte 2 nibbles = 1 byte Voorbeeld van een byte: 0101 1101 Hexadecimaal: 5D 1 kibibyte (KiB) = 210 = 1024 bytes 1 mebibyte (MiB) = 220 = 1 048 576 bytes 1 gibibyte (GiB) = 230 = 1 073 741 824 bytes 1 tebibyte (TiB) = 240 ~ 1 biljoen bytes 1 Kibibit (Kib) = 210 bit = 1024 bit ca2-13 Grootte-orden • Yotta (Y) 1024 • yocto (y) 10-24 • Zetta (Z) 1021 • zepto (z) 10-21 • Exa (E) 1018 • atto (a) 10-18 • Peta (P) 1015 • femto (f) 10-15 • Tera (T) 1012 • piko (p) 10-12 • Giga (G) 109 • nano (n) 10-9 • Mega (M) 106 • micro (,u) 10-6 • kilo • milli (m) 10-3 (k) 103 ca2-14 En verder, voor de nerds 1021 zetta Z 10-21 zepto z 1024 yotta Y 10-24 yocto y 1027 xona X 10-27 xonto x 1030 weka W 10-30 wekto w 1033 vunda V 10-33 vunkto v 1036 uda U 10-36 unto u 1039 treda TD 10-39 trekto td 1042 sorta S 10-42 sotro s 1045 rinta R 10-45 rimto r 1048 quexa Q 10-48 quekto q 1051 pepta PP 10-51 pekro pk 1054 ocha O 10-54 otro o 1057 nena N 10-57 nekto nk 1060 minga MI 10-60 mikto mi 1063 luma L 10-63 lunto l ca2-15 Een woord Woord: aantal bytes (2,4,8) (architectuur-afhankelijk) Dubbelwoord: 2 woorden Quadwoord: 4 woorden ca2-16 Voorbeeld 01010101010100001110101010110111 ... 0101 0101 0101 0000 1110 1010 1011 0111 ... 5 5 5 55 0 50 E A EA 5550 B 7 ... B7 ... EAB7 ... 5550EAB7 ... ca2-17 Overzicht • Logische operaties op bits en bitstrings • Hexadecimale representatie • Voorstelling van natuurlijke getallen – – – – – – • • • • Binair Gray code UPC code QR-code Binair gecodeerde decimalen (BCD) Excess-3 code Voorstelling van gehele getallen Voorstelling van reële getallen Voorstelling van lettertekens Voorbeelden ca2-18 Natuurlijke getallen: binair 0 1 2 3 4 5 6 … 0 1 10 11 100 101 110 … 0000 0001 0010 0011 0100 0101 0110 4 bit 00000000 00000001 00000010 00000011 00000100 00000101 00000110 8 bit ca2-19 Waarde van binaire voorstelling n 1 an1an2 ...a1a0 A 2 ai i i 0 Bereik: [0 2n-1] Aantal verschillende waarden: 2n ca2-20 Waarde van binair getal 15610 = 100111002 22 27 24 23 15610 = 1x27 + 1x24 + 1x23 + 1x22 = 128 + 16 + 8 + 4 = 156 ca2-21 Decimaal binair 156/2 = 78 rest 78/2 = 39 rest 39/2 = 19 rest 19/2 = 9 rest 9/2 = 4 rest 4/2 = 2 rest 2/2 = 1 rest 1/2 = 0 rest 0 0 1 1 1 0 0 1 10011100 ca2-22 Binair decimaal 10011100 0x2+ 1x2+ 2x2+ 4x2+ 9x2+ 19 x 2 + 39 x 2 + 78 x 2 + 1 0 0 1 1 1 0 0 =1 =2 =4 =9 = 19 = 39 = 78 = 156 ca2-23 Oefening 3510= ? 1000112= ca2-24 De binaire representatie is niet de enig mogelijke afbeelding 11 3 2 10 00 1 0 01 ca2-25 Gray code G1 0 G2 1 11 3 10 000 0 001 1 0 0 0 011 2 0 1 1 010 3 110 4 111 5 101 6 100 7 1 1 2 1 0 3 2 G3 00 1 0 01 Reflectieve Gray code ca2-26 UPC-code cijfer 0 1 2 3 4 5 6 7 8 9 linkercode 0001101 0011001 0010011 0111101 0100011 0110001 0101111 0111011 0110111 0001011 rechtercode 1110010 1100110 1101100 1000010 1011100 1001110 1010000 1000100 1001000 1110100 http://www.youtube.com/watch?v=e6aR1k-ympo ca2-27 QR-code Versie 1 (21x21) (Max capaciteit: 17 B) 4 niveaus van foutcorrectie Versie 40: (177x177) (Max capaciteit: 2953 B) ca2-28 Natuurlijke getallen: BCD Binary Coded Decimal 156 10011100 0001 0101 0110 1 9C 5 6 01 56 ca2-29 Packed vs. unpacked 156 0001 0101 0110 1 5 6 01 56 packed BCD 0000 0001 0000 0101 0000 0110 0 1 0 5 01 05 06 0 6 unpacked BCD ca2-30 0 1 2 3 4 5 6 7 8 9 BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 E3 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 Excess-3 code 0011 3 1000 8 1011 11 1 0001 0110 3 1011 8 1 0001 11 1 0100 ca2-31 Overzicht • • • • Logische operaties op bits en bitstrings Hexadecimale representatie Voorstelling van natuurlijke getallen Voorstelling van gehele getallen – – – – – Teken + grootte 1-complement 2-complement Verschoven Binair gecodeerde decimalen (BCD) • Voorstelling van reële getallen • Voorstelling van lettertekens • Voorbeelden ca2-32 Gehele getallen: teken + grootte -3 -2 -1 -0 0 1 2 3 … 1011 1010 1001 1000 0000 0001 0010 0011 43bit bit -7 7 10000011 10000010 10000001 10000000 00000000 00000001 00000010 00000011 8 bit -127 127 ca2-33 Gehele getallen: teken+grootte an1an2 ...a1a0 A (1) n2 an 1 i 2 ai i 0 Bereik: [-(2n-1-1) 2n-1-1] Aantal verschillende waarden: 2n-1 ca2-34 Gehele getallen: 1-complement “inverteren van bits” 0110 6 1001 -6 Alle positieve getallen worden afgebeeld op negatieve en vice versa ca2-35 -3 -2 -1 -0 0 1 2 3 … +1 +1 +1 +1 +1 +1 +1 1100 1101 1110 1111 0000 0001 0010 0011 4 bit -7 7 11111100 11111101 11111110 11111111 00000000 00000001 00000010 00000011 8 bit -127 127 tekenuitbreiding Gehele getallen: 1-complement ca2-36 Voorbeeld 1-complementoptelling + 3 1 4 0011 0001 0100 + + 3 -1 0011 1110 10001 1 2 0010 + + -3 -1 1100 1110 11010 1 -4 1011 Som = A+B+overdracht ca2-37 -3 -2 -1 0 1 2 3 … +1 1101 1110 1111 0000 0001 0010 0011 4 bit -8 7 11111101 11111110 11111111 +1 00000000 00000001 00000010 00000011 8 bit -128 127 tekenuitbreiding Gehele getallen: 2-complement ca2-38 1-complement n2 an1an2 ...a1a0 A (2 n 1 1)an 1 2i ai i 0 Bereik: [-(2n-1-1) 2n-1-1] Aantal verschillende waarden: 2n-1 2-complement n2 an1an2 ...a1a0 A 2 n 1 an 1 2i ai i 0 Bereik: [-2n-1 2n-1-1] Aantal verschillende waarden: 2n ca2-39 Voorbeeld 2-complementoptelling 3 0011 -1 1111 + 2 10010 modulo 4 bit 3 -1 + 2 0000 0011 1111 1111 10000 0010 modulo 8 bit ca2-40 Berekening van 2-complement -4 100 1-complement + 1 -3 101 -2 110 110 010 000 100 -1 111 101 111 011 001 0 000 1 1 1 1 1 001 010 110 1000 100 2 010 OVERFLOW 3 011 Ook: (2n – waarde) [binair geïnterpreteerd] ca2-41 Gehele getallen: verschoven -2 -1 0 1 2 3 4 5 +1 +1 +1 +1 +1 +1 +1 000 001 010 011 100 101 110 111 bias = 2 000 001 010 011 100 101 110 111 0 1 2 3 4 5 6 7 ca2-42 Gehele getallen: verschoven an1an2 ...a1a0 n 1 A 2 ai B i i 0 B = bias Bereik: [-B 2n-1-B] Aantal verschillende waarden: 2n ca2-43 Basiscomplement codes • Het principe van 1-complement en 2complement kan uitgebreid worden naar een willekeurige basis • 2-complement wordt dan de basiscomplementnotatie genoemd voor het talstelsel met basis 2 • 1-complementnotatie wordt dan de verminderde basiscomplementnotatie genoemd voor het talstelsel met basis 2 ca2-44 Binair gecodeerde decimalen • Teken + grootte -301 1 3 0 1 •9-complement -301 (301+698=999) 9 9 8 6 •10-complement -301 (9-compl + 1) 9 packed & unpacked 6 9 9 ca2-45 Overzicht • • • • • Logische operaties op bits en bitstrings Hexadecimale representatie Voorstelling van natuurlijke getallen Voorstelling van gehele getallen Voorstelling van reële getallen – Vaste-kommavoorstelling – Vlottende-kommavoorstelling • Voorstelling van lettertekens • Voorbeelden ca2-46 Vaste-kommavoorstelling 0001101001,01010 + 0001001001,01010 0010110010,10100 ca2-47 Vlottende-kommavoorstelling Vlottende komma: voorstelling Vlottende komma: exponent Vlottende komma: mantisse s exp mantisse s expon mantisse s exponent S mantisse E (-1) × M × 2 ANSI/IEEE 754 1|8|23 1|11|52 (1980) ca2-48 Vlottende-kommagetallen 1 10000001 01000000000000000000000 Verschoven representatie Bias = 127 Exponent: 129 - 127 = 2 ca2-49 Vlottende-kommagetallen 1 10000001 01000000000000000000000 Genormaliseerde fractie 1.01000000000000000000000 = 1 + 0 x 2-1 + 1 x 2-2 + 0 x 2-3 + … = 1 + 0 + 0.25 + 0 + … = 1.25 Waarde: (-1)1 x 1.25 x 22 = -1.25 x 4 = -5.0 ca2-50 Bereik & precisie Formaat: 1|2|2, bias = 1 s|ee|mm 00 -1 0.5 00 1.00 01 0 1 01 1.25 10 1 2 10 1.50 11 2 4 11 1.75 ca2-51 Alle 5-bit vk-getallen Formaat: 1|2|2, bias = 1 e m 1.00 1.25 1.50 1.75 -1 0.5 0.625 0.75 0.875 0 1 1.25 1.5 1.75 1 2 2.5 3 3.5 2 4 5 6 7 Vlottende-kommavoorstelling kan gesorteerd worden ca2-52 Gesorteerd 0 00 00 0.5 0 00 01 0.625 0 00 10 0.75 0 00 11 0.875 0 01 00 1 0 01 01 1.25 0 01 10 1.5 0 01 11 1.75 0 10 00 2 0 10 01 2.5 0 10 10 3 0 10 11 3.5 0 11 00 4 0 11 01 5 0 11 10 6 0 11 11 7 1 00 00 -0.5 1 00 01 -0.625 1 00 10 -0.75 1 00 11 -0.875 1 01 00 -1 1 01 01 -1.25 1 01 10 -1.5 1 01 11 -1.75 1 10 00 -2 1 10 01 -2.5 1 10 10 -3 1 10 11 -3.5 1 11 00 -4 1 11 01 -5 1 11 10 -6 1 11 11 -7 ca2-53 Bereik Formaat: 1|2|2 0.500 0.625 0.750 0.875 1.00 1.25 1.50 1.75 2.00 2.50 3.00 3.50 4.00 5.00 6.00 7.00 50% ca2-54 Bereik Formaat: 1|2|2, bias = 1 e m 00 01 10 11 -1 0 0.25 0.50 0.75 0 1 1.25 1.5 1.75 1 2 2.5 3 3.5 Nan Nan 2 Nan Gedenormaliseerde getallen (e=0) ca2-55 Gesorteerd 0 00 00 0 0 00 01 0.25 0 00 10 0.5 0 00 11 0.75 0 01 00 1 0 01 01 1.25 0 01 10 1.5 0 01 11 1.75 0 10 00 2 0 10 01 2.5 0 10 10 3 0 10 11 3.5 0 11 00 + 0 11 01 Nan 0 11 10 Nan 0 11 11 Nan 1 00 00 -0 1 00 01 -0.25 1 00 10 -0.5 1 00 11 -0.75 1 01 00 -1 1 01 01 -1.25 1 01 10 -1.5 1 01 11 -1.75 1 10 00 -2 1 10 01 -2.5 1 10 10 -3 1 10 11 -3.5 1 11 00 - 1 11 01 -Nan 1 11 10 -Nan 1 11 11 -Nan ca2-56 Bereik en precisie Formaat: 1|2|2 - 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 + 2.00 2.50 3.00 3.50 Nan Nan Nan ca2-57 Voorbeeld Representeer 5.1 in 1|4|8 met bias 7 5.1 = 5 + 0.1 5 = 101 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 5.1 = 101.00011001100... = 1.0100011001100... x 22 Exponent = 2 + 7 in 4 bits 9 = 1001 0100101000110 Eigenlijk: 5.09375 maar 0100101000111 is 5.109375 ! ca2-58 Bereik en precisie 1|8|23 Exponent bits 1|11||52 8 11 Gebruikte exp’ten 255 2047 Mantisse bits 23 52 99,60% 99,95% 6-7 15-16 10-38-1038 10-308-10308 Efficiëntie Aantal decimalen Bereik Gehelen - Decimalen 9-10 - Bereik 0-109 18-19 0-1018 ca2-59 Vlottende-kommagetallen • Gehele getallen die niet meer bits nodig hebben dan beschikbaar in de mantisse kunnen steeds exact voorgesteld worden (en zullen dus niet afgerond worden). • Slechts een zeer klein aantal reële getallen kan exact voorgesteld worden. Alle andere worden benaderd. Testen op gelijkheid is geen goed idee. ca2-60 Afronden Er kan op vier manieren afgerond worden • Naar + ∞ • Naar - ∞ • Naar 0 (afkappen) • Naar de dichtste voorstelbare waarde – +1 indien > 0,5 – Afkappen indien < 0,5 – Even mantisse indien = 0,5 Vlottende komma: afronden ca2-61 Extra bits • Om de precisie te verhogen kunnen er bij de berekening nog 3 extra bits gebruikt worden – Guard bit – Rounding bit – Sticky bit IEEE 754 Vlottende komma: guard bit Vlottende komma: rounding bit Vlottende komma: sticky bit GRS ca2-62 Vlottende-komma-optelling start Maak de twee exponenten gelijk aan de grootste Rond af Tel de mantissen op Normaliseer resultaat Overflow Underflow Genormaliseerd? exceptie stop ca2-63 Vlottende-komma-optelling 1.1111 x 23 15.5 + 1.0010 x 23 +9.0 11.0001 x 23 24.5 = 1.10001 x 24 24.5 = 1.1000 x 24 24.0 ca2-64 Vlottende-komma-optelling 1.1111 x 23 15.5 + 1.0010 x 21 + 0.010010 x 23 +2.25 +2.25 10.001110 x 23 17.75 = 1.0001110 x 24 17.75 = 1.0010 x 24 18 ca2-65 Vlottende-komma-aftrekking 1.0001 x 24 - 1.0010 x 21 - 0.0010010 x 24 0.1110110 x 24 1.110110 x 23 1.1110 x 23 17.0 -2.25 -2.25 14.75 14.75 15 ca2-66 Vlottende-komma-aftrekking 1.0010 x 24 - 1.0010 x 21 - 0.0010010 x 24 0.1111110 x 24 1.111110 x 23 10.0000 x 23 1.0000 x 24 18.0 -2.25 -2.25 15.75 15.75 16 16 ca2-67 Vlottende-komma-optelling Berekeningen in vlottende-kommagetallen zijn benaderingen Bewerkingen zijn niet steeds reversibel. Associativiteit geldt niet B.v. precisie van 4 decimalen 0.001 + (1000 - 1000) = 0.001 + 0 = 0.001 (0.001 + 1000) - 1000 = 1000 - 1000 = 0 ca2-68 Vlottende-kommavermenigvuldiging 1.1111 x 23 15.5 x 1.0010 x 23 x 9.0 10.00101110 x 23+3 139.5 = 1.000101110 x 27 139.5 = 1.0001 x 27 136.0 ca2-69 Overzicht • • • • • • • Logische operaties op bits en bitstrings Hexadecimale representatie Voorstelling van natuurlijke getallen Voorstelling van gehele getallen Voorstelling van reële getallen Voorstelling van lettertekens Voorbeelden ca2-70 Voorstelling lettertekens ASCII = American Standard Code for Information Interchange EBCDIC = Extended Binary Coded Decimal Interchange Code UCS = Universal character set (ISO/IEC 10646) Per uniek teken: 1 code point: U+0065 = ‘e’; U+00E9 = ‘é’; U+25A0=‘■’ ca2-71 Ascii-tabel 00 10 20 30 40 50 60 70 0 NUL DLE SP 0 @ P ` p 1 SOH DC1 ! 1 A Q a q 2 STX DC2 “ 2 B R b r 3 ETX DC3 # 3 C S c s 4 EOT DC4 $ 4 D T d t 5 ENQ NAK % 5 E U e u 6 ACK SYN & 6 F V f v 7 BEL ETB ‘ 7 G W g w 8 BS CAN ( 8 H X h x 9 HT EM ) 9 I Y i y A LF SUB * : J Z j z B VT ESC + ; K [ k { C FF FS , < L \ l | D CR GS - = M ] m } E SO RS . > N ^ n ~ F SI US / ? O _ o DEL ca2-72 Coderingen Voorstelling U+0065 U+00E9 U+25A0 e é ■ LATIN SMALL LETTER E LATIN SMALL BLACK SQUARE LETTER E WITH ACUTE Decimaal 101 233 9632 UTF-8 0x65 0xC3A9 0xE296A0 UTF-16 0x0065 0x00E9 0x25A0 UTF-32 0x00000065 0x000000E9 0x000025A0 Alt 101 Alt 0233 Alt 130 Alt 9632 Alt 254 “\u0065” “\u00E9” “\u25A0” &#x65 / &#101 &#xe9 / &#233 &#x25a0 / &#9632 Windows C html ca2-73 Overzicht • • • • • • • Logische operaties op bits en bitstrings Hexadecimale representatie Voorstelling van natuurlijke getallen Voorstelling van gehele getallen Voorstelling van reële getallen Voorstelling van lettertekens Voorbeelden ca2-74 Interpretatie 10010000100100000000000000000000 Bitpatroon: 10010000100100000000000000000000 Natuurlijk getal: 242535628810 Geheel getal: -186961100810 BCD: 9090000010 Letters: ÉÉ Vlottende komma: -5.67979851 x 10-29 De betekenis van een bitpatroon hangt af van de context ca2-75 Enkele belangrijke getallen 20 =1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 byte binair 0 255 2-compl -128 127 Woord binair 0 65535 2-compl -32768 32767 -1 = 1111 11112 = FF16 = 1111 1111 1111 11112 = FF FF16 ca2-76 Oefening Gegeven het bitpatroon 01100111 Wat is hiervan de waarde als • Binair getal • Teken-grootte notatie • 1-complementgetal • 2-complementgetal • Verschoven representatie (bias = 50) • Binair vaste komma (2 bits na komma) • BCD-getal • Ascii-teken • Vlottende-kommagetal (1|3|4, bias=3) ca2-77 Oefening Stel het getal -75 voor in 16 bits (in hex) • Teken grootte notatie • 1-complement • 2-complement • Verschoven representatie (bias = 100) • BCD 9-complement • BCD 10-complement • Vlottende komma-getal (1|5|10, bias 15) ca2-78 Pauze ca2-79