Operácie

Prevody medzi číselnými sústavami: Rozdiel medzi revíziami

Z SensorWiki

(Príklady na precvičovanie)
 
(15 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 4: Riadok 4:
 
Podrobnejší popis a teóriu nájdete na stránke [[Číselné sústavy]]
 
Podrobnejší popis a teóriu nájdete na stránke [[Číselné sústavy]]
  
'''Príklad 1:''' Preveďte číslo 53241<sub>10</sub> do hexadecimálnej (šestnástkovej) sústavy.
+
 
 +
'''Príklad 1:''' Preveďte číslo 123<sub>10</sub> do binárnej (dvojkovej) sústavy.
 +
 
 +
[[Obrázok:Prev_dec_bin.jpg]]
 +
 
 +
 
 +
'''Príklad 2:''' Preveďte číslo 53241<sub>10</sub> do hexadecimálnej (šestnástkovej) sústavy.
  
 
[[Obrázok:Prev_dec_hex.jpg]]
 
[[Obrázok:Prev_dec_hex.jpg]]
  
  
'''Príklad 2:''' Preveďte číslo 123<sub>10</sub> do binárnej (dvojkovej) sústavy.
+
'''Príklad 3:''' Záporné čísla
 +
 
 +
 
 +
Priamy kód -- jeden bit (MSB) je vyhradený pre znamienko
 +
 
 +
  0 000    0              1 000    -0
 +
  0 001    1              1 001    -1
 +
  0 010    2              1 010    -2
 +
  0 011    3              1 011    -3
 +
  0 100    4              1 100    -4
 +
  0 101    5              1 101    -5
 +
  0 110    6              1 110    -6
 +
  0 111    7              1 111    -7
 +
   
 +
 
 +
  3 + (-3) = 0011 + 1011 = 1110 = -6  nOK
 +
  5 + (-3) = 0101 + 1011 = 1 0000 = 0  nOK
 +
 
 +
Inverzný kód -- podobne ako priamy, MSB je znamienko
  
[[Obrázok:Prev_dec_bin.jpg]]
+
  0 000    0              1 000    -7
 +
  0 001    1              1 001    -6
 +
  0 010    2              1 010    -5
 +
  0 011    3              1 011    -4
 +
  0 100    4              1 100    -3
 +
  0 101    5              1 101    -2
 +
  0 110    6              1 110    -1
 +
  0 111    7              1 111    -0
 +
 
 +
 
 +
  3 + (-3) = 0011 + 1100 = 1111 = -0    OK
 +
  5 + (-3) = 0101 + 1100 = 1 0001 = 1  nOK
  
 +
  Je nutná korekcia: pripočítať CY bit k LSB
 +
  5 + (-3) = 0101 + 1100 = 1 0001 = 0001+1 = 0010 = 2  OK
 +
 
 +
Doplnkový kód -- inverzný kód + 1, stále platí MSB je znamienko ale naviac funguje aritmetika
  
 +
  0 000    0              1 111  -1     
 +
  0 001    1              1 110  -2     
 +
  0 010    2              1 101  -3     
 +
  0 011    3              1 100  -4     
 +
  0 100    4              1 011  -5     
 +
  0 101    5              1 010  -6     
 +
  0 110    6              1 001  -7     
 +
  0 111    7              1 000  ?? => -8
 +
   
 +
 
 +
  3 + (-3) = 0011 + 1101 = 1 0000 = 0    OK
 +
  5 + (-3) = 0101 + 1101 = 1 0010 = 2    OK
 +
-7 + (-1) = 1001 + 1111 = 1 1000 = -8
  
 
== Príklady na precvičovanie ==
 
== Príklady na precvičovanie ==
  
Vyplňte nasledovnú tabuľku
+
1. Vyplňte nasledovnú tabuľku
 
{| class="wikitable"
 
{| class="wikitable"
 
! DEC !!  HEX !! BIN
 
! DEC !!  HEX !! BIN
Riadok 56: Riadok 108:
 
2. Preveďte niekoľko čísel z jednej sústavy do inej podľa pokynov cvičiaceho.
 
2. Preveďte niekoľko čísel z jednej sústavy do inej podľa pokynov cvičiaceho.
  
3. Rozsahy Bajt, 2Bajty, 4Bajty (min, max)
 
  
4. BCD kód
+
Preveďte z desiatkovej do dvojkovej sústavy:
 +
* '''158'''<sub>10</sub> = ?<sub>2</sub>
 +
* '''144'''<sub>10</sub> = ?<sub>2</sub>
 +
* '''1010'''<sub>DEC</sub> = ?<sub>BIN</sub>
 +
* '''123'''<sub>10</sub> = ?<sub>2</sub>
  
5. ASCII kód
+
Preveďte z dvojkovej do desiatkovej sústavy:
 
+
* '''1010 0101'''<sub>2</sub> = ?<sub>10</sub>
6. Záporné čísla - doplnkový kód
+
* '''1000 0001'''<sub>2</sub> = ?<sub>10</sub>
 
+
* '''101001'''<sub>BIN</sub> = ?<sub>DEC</sub>
 
+
* '''0101001010110'''<sub>2</sub> = ?<sub>10</sub>
 
 
== Otestujte sa sami ==
 
  
  
 
<quiz shuffleanswers=true display=simple>
 
<quiz shuffleanswers=true display=simple>
 
+
{Preveďte číslo '''234'''<sub>DEC</sub> z desiatkovej do dvojkovej sústavy:
{ Preveďte číslo '''234'''<sub>DEC</sub> z desiatkovej do dvojkovej sústavy:
 
 
|type="{}"}
 
|type="{}"}
 
{ 1110 1010|11101010 }
 
{ 1110 1010|11101010 }
  
{ Preveďte číslo '''101'''<sub>10</sub> z desiatkovej do dvojkovej sústavy:
+
{Preveďte číslo '''101'''<sub>10</sub> z desiatkovej do dvojkovej sústavy:
 
|type="{}"}
 
|type="{}"}
 
{ 110 0101|1100101 }
 
{ 110 0101|1100101 }
  
{Preveďte číslo '''234'''<sub>BIN</sub> z dvojkovej do desiatkovej sústavy:
+
{Preveďte číslo '''1100 0011'''<sub>BIN</sub> z dvojkovej do desiatkovej sústavy:
 
|type="{}"}
 
|type="{}"}
{ 1110 1010|11101010 }
+
{ 195 }
  
 
{Preveďte číslo '''1010 1010'''<sub>2</sub> z dvojkovej do desiatkovej sústavy:
 
{Preveďte číslo '''1010 1010'''<sub>2</sub> z dvojkovej do desiatkovej sústavy:
Riadok 88: Riadok 140:
  
 
</quiz>
 
</quiz>
 +
 +
 +
 +
 +
Preveďte z desiatkovej do šestnástkovej sústavy:
 +
* '''158'''<sub>10</sub> = ?<sub>16</sub>
 +
* '''144'''<sub>10</sub> = ?<sub>16</sub>
 +
* '''27'''<sub>10</sub> = ?<sub>16</sub>
 +
* '''201'''<sub>DEC</sub> = ?<sub>HEX</sub>
 +
 +
Preveďte zo šestnástkovej do desiatkovej sústavy:
 +
* '''1A'''<sub>16</sub> = ?<sub>10</sub>
 +
* '''3FF'''<sub>HEX</sub> = ?<sub>DEC</sub>
 +
* '''10'''<sub>16</sub> = ?<sub>10</sub>
 +
* '''0a9'''<sub>16</sub> = ?<sub>10</sub>
 +
  
 
<quiz shuffleanswers=true display=simple>
 
<quiz shuffleanswers=true display=simple>
Riadok 108: Riadok 176:
  
 
</quiz>
 
</quiz>
 +
 +
 +
Priame prevody  medzi šestnástkovou a  dvojkovou sústavou:
 +
* '''1011 0011'''<sub>2</sub> = ?<sub>16</sub>
 +
* '''0A1A1'''<sub>16</sub> = ?<sub>2</sub>
 +
* '''0c3f'''<sub>HEX</sub> = ?<sub>BIN</sub>
 +
* '''1100 0011 0101 1010'''<sub>BIN</sub> = ?<sub>HEX</sub>
  
 
<quiz shuffleanswers=true display=simple>
 
<quiz shuffleanswers=true display=simple>
 +
  
 
{Preveďte číslo '''0111 1110'''<sub>BIN</sub> z dvojkovej do šestnástkovej sústavy:
 
{Preveďte číslo '''0111 1110'''<sub>BIN</sub> z dvojkovej do šestnástkovej sústavy:
Riadok 115: Riadok 191:
 
{ 7E|7e|07E|07e }
 
{ 7E|7e|07E|07e }
  
{ Preveďte číslo '''0101 0001'''<sub>2</sub> z dvojkovej do šestnástkovej sústavy:
+
{Preveďte číslo '''0101 0001'''<sub>2</sub> z dvojkovej do šestnástkovej sústavy:
 
|type="{}"}
 
|type="{}"}
 
{ 51 }
 
{ 51 }
  
{ Preveďte číslo '''0C3'''<sub>16</sub> z šestnástkovej do dvojkovej sústavy:
+
{Preveďte číslo '''0C3'''<sub>16</sub> z šestnástkovej do dvojkovej sústavy:
 
|type="{}"}
 
|type="{}"}
 
{ 1100 0011|11000011 }
 
{ 1100 0011|11000011 }
  
{ Preveďte číslo '''4B'''<sub>HEX</sub> z šestnástkovej do dvojkovej sústavy:
+
{Preveďte číslo '''9B'''<sub>HEX</sub> z šestnástkovej do dvojkovej sústavy:
 
|type="{}"}
 
|type="{}"}
 
{ 1001 1011|10011011 }
 
{ 1001 1011|10011011 }
Riadok 131: Riadok 207:
  
  
TODO:
 
  
* http://www.rapidtables.com/convert/number/hex-dec-bin-converter.htm
 
* http://calc.50x.eu/
 
* https://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html
 
* http://www.binaryhexconverter.com/
 
* https://www.algoritmy.net/article/80/Prevod-cisla-mezi-soustavami
 
  
'''Zložitejšie úlohy'''
+
3. Záporné čísla - doplnkový kód 
  
1. Riešenie nasledovného problému vám pomôže ostať bdelými aj na zvyšku cvičenia. Preveďte do hexadecimálnej sústavy 12648430(dec).
+
Pozn.: Predtým najprv binárnu aritmetiku na sčítanie aby vedeli +1
  
2. Vysvetlite, prečo programátori oslavujú vianoce už v októbri OCT18 (pomôcka: preveďte 18 z osmičkovej do desiatkovej sústavy).
+
Preveďte z desiatkovej do dvojkovej sústavy v doplnkovom kóde:
 +
* '''-99'''<sub>10</sub> = ?<sub>2</sub>
 +
* '''-200'''<sub>10</sub> = ?<sub>2</sub>
  
 +
Preveďte z dvojkovej sústavy v doplnkovom kóde do desiatkovej:
 +
* '''1010 1000'''<sub>2</sub> = ?<sub>10</sub>
 +
* '''1010 1011'''<sub>2</sub> = ?<sub>10</sub>
  
3. Pre adresovanie počítačov v siet internet sa používa IPv6 adresa, ktorá
+
<quiz shuffleanswers=true display=simple>
pozostáva z 8 skupín štvorciferných hexadecimálnych číslic oddelených dvojbodkami, napríklad
 
2001:0db8:85a3:0000:0000:8a2e:0370:7334
 
  
Sledovaním sieťovej komunikácie na podozrivom počítači pomocou binárneho analyzátora
+
{Preveďte číslo '''-14'''<sub>10</sub> do dvojkovej sústavy v doplnkovom kóde:
sme zistili, že najčastejšie komunikuje s nasledovným serverom
+
|type="{}"}
 +
{ 1111 0010|11110010 }
  
0010 1010 0000 0011 : 0010 1000 1000 0000 : 0010 0001 0011 0000 : 1100 1111 0000 0101 :  
+
{Preveďte číslo '''1111 0110'''<sub>2</sub> v doplnkovom kóde do desiatkovej sústavy:
1111 1010 1100 1110 : 1011 0000 0000 1100 : 0000 0000 0000 0000 : 0000 0000 0000 0000
+
|type="{}"}
 +
{ -10 }
  
Preveďte binárny tvar na hexadecimálny a pomocou služby https://ipinfo.io/
+
</quiz>
zistite, s kým vlastník počítača komunikoval.
 
 
 
 
 
4. V ktorej sústave je toto pravda?
 
a) 10 + 11 = 101
 
 
b) 10 + 11 = 21
 
 
 
 
 
5. Ak uvažujeme jeden bajt (8 bitov), aký rozsah čísel vieme reprezentovať? Ak najvyšší (siedmy) bit bude
 
znamienko (0 = +, 1 = -) aký bude rozsah? V doplnkovom kóde bude aký rozsah?
 
 
 
6. Aký je rozsah pre 32-bitové celé čísla (signed, unsigned)?
 
 
 
 
 
7. '''Bonus''' za 2 body pre prvé riešenie tejto úlohy:
 
  
Jedna z prvých expedícií na Mars tam našla zvyšky civilizácie. Z rozličných
 
artefaktov a obrázkov, ktoré tam našli, si vedci odvodili, že tvory, ktoré tu
 
žili mali podobu štvornohých bytostí s jedným chápadlom, ktoré sa na konci
 
rozvetvovalo na nezistený počet "prstov." Po ďalších hľadaniach a čiastočnej
 
analýze marťasnkého písma boli prieskumníci schopní preložiť marťanskú matematiku.
 
Našli nasledujúcu rovnicu:
 
  
5x<sup>2</sup> - 50x + 125 = 0
+
4. Rozsahy - aké najmenšie a aké najväčšie číslo vieme zobraziť v pamäťovej bunke
 +
šírky 1 Bajt? Aké celé čísla vieme uložiť v 32-bitovom počítači?
  
pri ktorej boli ako riešenia uvedené ''x = 5'' a ''x = 8''.
 
Prvý výsledok sa zdá byť správny, ale druhý nie. Medzi vedcami bol aj jeden, ktorý
 
našiel dôkazy o tom, že Marťania sa ku svojmu číselnému systému dostali postupne
 
veľmi podobne ako aj my. Čo myslíte, koľko prstov mali Marťania?
 
(Z Bent z Tau Beta Pi , Február 1956).
 
  
  
  
 
[[Category:Základy počítačov]]
 
[[Category:Základy počítačov]]

Aktuálna revízia z 13:02, 27. september 2019

Teoretický úvod

Podrobnejší popis a teóriu nájdete na stránke Číselné sústavy


Príklad 1: Preveďte číslo 12310 do binárnej (dvojkovej) sústavy.

Prev dec bin.jpg


Príklad 2: Preveďte číslo 5324110 do hexadecimálnej (šestnástkovej) sústavy.

Prev dec hex.jpg


Príklad 3: Záporné čísla


Priamy kód -- jeden bit (MSB) je vyhradený pre znamienko

 0 000    0               1 000    -0
 0 001    1               1 001    -1
 0 010    2               1 010    -2
 0 011    3               1 011    -3
 0 100    4               1 100    -4
 0 101    5               1 101    -5
 0 110    6               1 110    -6
 0 111    7               1 111    -7
   
 3 + (-3) = 0011 + 1011 = 1110 = -6   nOK
 5 + (-3) = 0101 + 1011 = 1 0000 = 0  nOK
 

Inverzný kód -- podobne ako priamy, MSB je znamienko

 0 000    0               1 000    -7
 0 001    1               1 001    -6
 0 010    2               1 010    -5
 0 011    3               1 011    -4
 0 100    4               1 100    -3
 0 101    5               1 101    -2
 0 110    6               1 110    -1
 0 111    7               1 111    -0
 
 
 3 + (-3) = 0011 + 1100 = 1111 = -0     OK
 5 + (-3) = 0101 + 1100 = 1 0001 = 1   nOK
 Je nutná korekcia: pripočítať CY bit k LSB
 5 + (-3) = 0101 + 1100 = 1 0001 = 0001+1 = 0010 = 2   OK
 

Doplnkový kód -- inverzný kód + 1, stále platí MSB je znamienko ale naviac funguje aritmetika

 0 000    0               1 111   -1      
 0 001    1               1 110   -2      
 0 010    2               1 101   -3      
 0 011    3               1 100   -4      
 0 100    4               1 011   -5      
 0 101    5               1 010   -6      
 0 110    6               1 001   -7      
 0 111    7               1 000   ?? => -8
   
 
 3 + (-3) = 0011 + 1101 = 1 0000 = 0     OK
 5 + (-3) = 0101 + 1101 = 1 0010 = 2     OK
-7 + (-1) = 1001 + 1111 = 1 1000 = -8

Príklady na precvičovanie

1. Vyplňte nasledovnú tabuľku

DEC HEX BIN
0                      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

2. Preveďte niekoľko čísel z jednej sústavy do inej podľa pokynov cvičiaceho.


Preveďte z desiatkovej do dvojkovej sústavy:

  • 15810 = ?2
  • 14410 = ?2
  • 1010DEC = ?BIN
  • 12310 = ?2

Preveďte z dvojkovej do desiatkovej sústavy:

  • 1010 01012 = ?10
  • 1000 00012 = ?10
  • 101001BIN = ?DEC
  • 01010010101102 = ?10


1 Preveďte číslo 234DEC z desiatkovej do dvojkovej sústavy:

2 Preveďte číslo 10110 z desiatkovej do dvojkovej sústavy:

3 Preveďte číslo 1100 0011BIN z dvojkovej do desiatkovej sústavy:

4 Preveďte číslo 1010 10102 z dvojkovej do desiatkovej sústavy:



Preveďte z desiatkovej do šestnástkovej sústavy:

  • 15810 = ?16
  • 14410 = ?16
  • 2710 = ?16
  • 201DEC = ?HEX

Preveďte zo šestnástkovej do desiatkovej sústavy:

  • 1A16 = ?10
  • 3FFHEX = ?DEC
  • 1016 = ?10
  • 0a916 = ?10


1 Preveďte číslo 234DEC z desiatkovej do šestnástkovej sústavy:

2 Preveďte číslo 10110 z desiatkovej do šestnástkovej sústavy:

3 Preveďte číslo 0C716 z šestnástkovej do desiatkovej sústavy:

4 Preveďte číslo ABBAHEX z šestnástkovej do desiatkovej sústavy:


Priame prevody medzi šestnástkovou a dvojkovou sústavou:

  • 1011 00112 = ?16
  • 0A1A116 = ?2
  • 0c3fHEX = ?BIN
  • 1100 0011 0101 1010BIN = ?HEX

1 {Preveďte číslo 0111 1110BIN z dvojkovej do šestnástkovej sústavy:

2 Preveďte číslo 0101 00012 z dvojkovej do šestnástkovej sústavy:

3 Preveďte číslo 0C316 z šestnástkovej do dvojkovej sústavy:

4 Preveďte číslo 9BHEX z šestnástkovej do dvojkovej sústavy:



3. Záporné čísla - doplnkový kód

Pozn.: Predtým najprv binárnu aritmetiku na sčítanie aby vedeli +1

Preveďte z desiatkovej do dvojkovej sústavy v doplnkovom kóde:

  • -9910 = ?2
  • -20010 = ?2

Preveďte z dvojkovej sústavy v doplnkovom kóde do desiatkovej:

  • 1010 10002 = ?10
  • 1010 10112 = ?10

1 Preveďte číslo -1410 do dvojkovej sústavy v doplnkovom kóde:

2 Preveďte číslo 1111 01102 v doplnkovom kóde do desiatkovej sústavy:


4. Rozsahy - aké najmenšie a aké najväčšie číslo vieme zobraziť v pamäťovej bunke šírky 1 Bajt? Aké celé čísla vieme uložiť v 32-bitovom počítači?