{"id":1572,"date":"2026-05-15T14:54:57","date_gmt":"2026-05-15T12:54:57","guid":{"rendered":"https:\/\/trzykody.pl\/?p=1572"},"modified":"2026-05-15T14:54:59","modified_gmt":"2026-05-15T12:54:59","slug":"system-dziesiatkowy","status":"publish","type":"post","link":"https:\/\/trzykody.pl\/index.php\/2026\/05\/15\/system-dziesiatkowy\/","title":{"rendered":"System dziesi\u0105tkowy"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Liczby zapisane w codziennych obliczeniach wygl\u0105daj\u0105 pozornie banalnie. Cz\u0142owiek wpisuje 2026, 3,14 albo 150000 i rzadko zastanawia si\u0119, dlaczego akurat taki zapis dzia\u0142a. Dopiero podczas programowania parser\u00f3w, implementacji arytmetyki w procesorach albo analizy reprezentacji danych wychodzi na jaw, \u017ce spos\u00f3b zapisu liczby ma ogromne znaczenie dla szybko\u015bci oblicze\u0144, zu\u017cycia pami\u0119ci i odporno\u015bci na b\u0142\u0119dy. W praktyce informatycznej problemy zaczynaj\u0105 si\u0119 bardzo szybko: przepe\u0142nienia typ\u00f3w, b\u0142\u0119dy zaokr\u0105gle\u0144, niepoprawne konwersje mi\u0119dzy systemami pozycyjnymi albo b\u0142\u0119dne interpretowanie danych binarnych. W takich sytuacjach fundamentem staje si\u0119 System dziesi\u0105tkowy i jego matematyczna konstrukcja.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Spis Tre\u015bci<\/h2><nav><ol><li><a href=\"#system-dziesiatkowy-jako-pozycyjny-sposob-zapisu-liczb-oparty-na-podstawie-dziesiec\">System dziesi\u0105tkowy jako pozycyjny spos\u00f3b zapisu liczb oparty na podstawie dziesi\u0119\u0107<\/a><\/li><li><a href=\"#dlaczego-czlowiek-uzywa-podstawy-dziesiec-i-jakie-ma-to-konsekwencje-w-informatyce\">Dlaczego cz\u0142owiek u\u017cywa podstawy dziesi\u0119\u0107 i jakie ma to konsekwencje w informatyce<\/a><\/li><li><a href=\"#system-dziesiatkowy-w-algorytmach-konwersji-miedzy-reprezentacjami-liczbowymi\">System dziesi\u0105tkowy w algorytmach konwersji mi\u0119dzy reprezentacjami liczbowymi<\/a><\/li><li><a href=\"#reprezentacja-liczb-calkowitych-i-ograniczenia-pamieci-w-komputerach\">Reprezentacja liczb ca\u0142kowitych i ograniczenia pami\u0119ci w komputerach<\/a><\/li><li><a href=\"#operacje-arytmetyczne-wykonywane-pozycyjnie-i-ich-implementacja-w-programach\">Operacje arytmetyczne wykonywane pozycyjnie i ich implementacja w programach<\/a><\/li><li><a href=\"#liczby-zmiennoprzecinkowe-i-problem-niedokladnosci-reprezentacji-wartosci-dziesietnych\">Liczby zmiennoprzecinkowe i problem niedok\u0142adno\u015bci reprezentacji warto\u015bci dziesi\u0119tnych<\/a><\/li><li><a href=\"#zastosowania-systemow-liczbowych-w-sieciach-komputerowych-kryptografii-i-programowaniu-niskopoziomowym\">Zastosowania system\u00f3w liczbowych w sieciach komputerowych, kryptografii i programowaniu niskopoziomowym<\/a><\/li><li><a href=\"#system-dziesiatkowy-w-kontekscie-edukacji-matematycznej-oraz-rozwoju-myslenia-algorytmicznego\">System dziesi\u0105tkowy w kontek\u015bcie edukacji matematycznej oraz rozwoju my\u015blenia algorytmicznego<\/a><\/li><li><a href=\"#typowe-bledy-podczas-pracy-z-liczbami-i-sytuacje-prowadzace-do-trudnych-awarii-systemow\">Typowe b\u0142\u0119dy podczas pracy z liczbami i sytuacje prowadz\u0105ce do trudnych awarii system\u00f3w<\/a><\/li><li><a href=\"#faq\">FAQ<\/a><ol><li><a href=\"#dlaczego-komputer-uzywa-systemu-binarnego-zamiast-dziesietnego\">Dlaczego komputer u\u017cywa systemu binarnego zamiast dziesi\u0119tnego?<\/a><\/li><li><a href=\"#czy-liczba-0-1-moze-byc-dokladnie-zapisana-binarnie\">Czy liczba 0,1 mo\u017ce by\u0107 dok\u0142adnie zapisana binarnie?<\/a><\/li><li><a href=\"#dlaczego-przepelnienie-typu-jest-grozne\">Dlaczego przepe\u0142nienie typu jest gro\u017ane?<\/a><\/li><li><a href=\"#po-co-programiscie-znajomosc-systemow-liczbowych\">Po co programi\u015bcie znajomo\u015b\u0107 system\u00f3w liczbowych?<\/a><\/li><li><a href=\"#dlaczego-liczby-float-nie-nadaja-sie-do-finansow\">Dlaczego liczby float nie nadaj\u0105 si\u0119 do finans\u00f3w?<\/a><\/li><li><a href=\"#czym-rozni-sie-liczba-calkowita-od-zmiennoprzecinkowej\">Czym r\u00f3\u017cni si\u0119 liczba ca\u0142kowita od zmiennoprzecinkowej?<\/a><\/li><li><a href=\"#dlaczego-adres-ip-zapisuje-sie-dziesietnie-skoro-komputer-uzywa-bitow\">Dlaczego adres IP zapisuje si\u0119 dziesi\u0119tnie, skoro komputer u\u017cywa bit\u00f3w?<\/a><\/li><li><a href=\"#czy-istnieja-komputery-dziesietne\">Czy istniej\u0105 komputery dziesi\u0119tne?<\/a><\/li><\/ol><\/li><\/ol><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"system-dziesiatkowy-jako-pozycyjny-sposob-zapisu-liczb-oparty-na-podstawie-dziesiec\">System dziesi\u0105tkowy jako pozycyjny spos\u00f3b zapisu liczb oparty na podstawie dziesi\u0119\u0107<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">System dziesi\u0105tkowy jest pozycyjnym systemem liczbowym o podstawie 10. Oznacza to, \u017ce ka\u017cda pozycja cyfry w liczbie reprezentuje kolejn\u0105 pot\u0119g\u0119 liczby 10. Cz\u0142owiek u\u017cywa dziesi\u0119ciu cyfr:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Cyfra<\/th><th>Warto\u015b\u0107<\/th><\/tr><\/thead><tbody><tr><td>0<\/td><td>zero<\/td><\/tr><tr><td>1<\/td><td>jeden<\/td><\/tr><tr><td>2<\/td><td>dwa<\/td><\/tr><tr><td>3<\/td><td>trzy<\/td><\/tr><tr><td>4<\/td><td>cztery<\/td><\/tr><tr><td>5<\/td><td>pi\u0119\u0107<\/td><\/tr><tr><td>6<\/td><td>sze\u015b\u0107<\/td><\/tr><tr><td>7<\/td><td>siedem<\/td><\/tr><tr><td>8<\/td><td>osiem<\/td><\/tr><tr><td>9<\/td><td>dziewi\u0119\u0107<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Kluczowe jest tutaj poj\u0119cie pozycyjno\u015bci. W liczbie 582 cyfra 5 nie oznacza po prostu \u201epi\u0119\u0107\u201d. Ona oznacza pi\u0119\u0107 setek.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Pozycja<\/th><th>Cyfra<\/th><th>Warto\u015b\u0107<\/th><\/tr><\/thead><tbody><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msup><mn>10<\/mn><mn>2<\/mn><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">10^2<\/annotation><\/semantics><\/math>102<\/td><td>5<\/td><td>500<\/td><\/tr><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msup><mn>10<\/mn><mn>1<\/mn><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">10^1<\/annotation><\/semantics><\/math>101<\/td><td>8<\/td><td>80<\/td><\/tr><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msup><mn>10<\/mn><mn>0<\/mn><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">10^0<\/annotation><\/semantics><\/math>100<\/td><td>2<\/td><td>2<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ca\u0142\u0105 liczb\u0119 mo\u017cna wi\u0119c rozpisa\u0107:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>582<\/mn><mo>=<\/mo><mn>5<\/mn><mo>\u22c5<\/mo><msup><mn>10<\/mn><mn>2<\/mn><\/msup><mo>+<\/mo><mn>8<\/mn><mo>\u22c5<\/mo><msup><mn>10<\/mn><mn>1<\/mn><\/msup><mo>+<\/mo><mn>2<\/mn><mo>\u22c5<\/mo><msup><mn>10<\/mn><mn>0<\/mn><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">582 = 5 \\cdot 10^2 + 8 \\cdot 10^1 + 2 \\cdot 10^0<\/annotation><\/semantics><\/math>582=5\u22c5102+8\u22c5101+2\u22c5100<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To samo dzia\u0142a dla liczb u\u0142amkowych.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Pozycja<\/th><th>Cyfra<\/th><th>Warto\u015b\u0107<\/th><\/tr><\/thead><tbody><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msup><mn>10<\/mn><mn>0<\/mn><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">10^0<\/annotation><\/semantics><\/math>100<\/td><td>3<\/td><td>3<\/td><\/tr><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msup><mn>10<\/mn><mrow><mo>\u2212<\/mo><mn>1<\/mn><\/mrow><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">10^{-1}<\/annotation><\/semantics><\/math>10\u22121<\/td><td>1<\/td><td>0,1<\/td><\/tr><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msup><mn>10<\/mn><mrow><mo>\u2212<\/mo><mn>2<\/mn><\/mrow><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">10^{-2}<\/annotation><\/semantics><\/math>10\u22122<\/td><td>4<\/td><td>0,04<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dla liczby 3,14:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>3,14<\/mn><mo>=<\/mo><mn>3<\/mn><mo>\u22c5<\/mo><msup><mn>10<\/mn><mn>0<\/mn><\/msup><mo>+<\/mo><mn>1<\/mn><mo>\u22c5<\/mo><msup><mn>10<\/mn><mrow><mo>\u2212<\/mo><mn>1<\/mn><\/mrow><\/msup><mo>+<\/mo><mn>4<\/mn><mo>\u22c5<\/mo><msup><mn>10<\/mn><mrow><mo>\u2212<\/mo><mn>2<\/mn><\/mrow><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">3{,}14 = 3 \\cdot 10^0 + 1 \\cdot 10^{-1} + 4 \\cdot 10^{-2}<\/annotation><\/semantics><\/math>3,14=3\u22c5100+1\u22c510\u22121+4\u22c510\u22122<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To w\u0142a\u015bnie pot\u0119gi podstawy s\u0105 najwa\u017cniejszym elementem ka\u017cdego pozycyjnego systemu liczbowego. W systemie binarnym podstaw\u0105 jest 2, w \u00f3semkowym 8, a w szesnastkowym 16.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Warto zauwa\u017cy\u0107 praktyczny aspekt pozycyjno\u015bci. Gdyby zapis nie by\u0142 pozycyjny, trzeba by\u0142oby stosowa\u0107 ogromn\u0105 liczb\u0119 symboli. System rzymski jest dobrym przyk\u0142adem problemu. Liczba 3888 wygl\u0105da tam tak:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>System<\/th><th>Zapis<\/th><\/tr><\/thead><tbody><tr><td>Dziesi\u0119tny<\/td><td>3888<\/td><\/tr><tr><td>Rzymski<\/td><td>MMMDCCCLXXXVIII<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">W systemie rzymskim praktycznie nie da si\u0119 efektywnie implementowa\u0107 algorytm\u00f3w arytmetycznych. Dodawanie czy mno\u017cenie wymaga manipulacji symbolami zamiast prostych operacji pozycyjnych.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dlaczego-czlowiek-uzywa-podstawy-dziesiec-i-jakie-ma-to-konsekwencje-w-informatyce\">Dlaczego cz\u0142owiek u\u017cywa podstawy dziesi\u0119\u0107 i jakie ma to konsekwencje w informatyce<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Najcz\u0119\u015bciej przyjmuje si\u0119, \u017ce wyb\u00f3r podstawy 10 wynika z anatomii cz\u0142owieka. Dziesi\u0119\u0107 palc\u00f3w u\u0142atwia\u0142o liczenie ju\u017c w staro\u017cytno\u015bci. Z perspektywy informatyki nie jest to jednak rozwi\u0105zanie idealne.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Procesory pracuj\u0105 binarnie. Dla elektroniki du\u017co prostsze jest rozr\u00f3\u017cnianie dw\u00f3ch stan\u00f3w:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Stan<\/th><th>Interpretacja<\/th><\/tr><\/thead><tbody><tr><td>brak napi\u0119cia<\/td><td>0<\/td><\/tr><tr><td>napi\u0119cie obecne<\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dlatego komputer wewn\u0119trznie nie przechowuje liczb dziesi\u0119tnych w postaci znak\u00f3w \u201e0-9\u201d. Zamiast tego u\u017cywa reprezentacji binarnej.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Liczba dziesi\u0119tna 13 wygl\u0105da tak:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>System<\/th><th>Zapis<\/th><\/tr><\/thead><tbody><tr><td>Dziesi\u0119tny<\/td><td>13<\/td><\/tr><tr><td>Binarny<\/td><td>1101<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Rozwini\u0119cie pozycyjne:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msub><mn>1101<\/mn><mn>2<\/mn><\/msub><mo>=<\/mo><mn>1<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>3<\/mn><\/msup><mo>+<\/mo><mn>1<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>2<\/mn><\/msup><mo>+<\/mo><mn>0<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>1<\/mn><\/msup><mo>+<\/mo><mn>1<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>0<\/mn><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">1101_2 = 1 \\cdot 2^3 + 1 \\cdot 2^2 + 0 \\cdot 2^1 + 1 \\cdot 2^0<\/annotation><\/semantics><\/math>11012\u200b=1\u22c523+1\u22c522+0\u22c521+1\u22c520<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To prowadzi do bardzo wa\u017cnego problemu praktycznego. Nie ka\u017cd\u0105 liczb\u0119 dziesi\u0119tn\u0105 mo\u017cna dok\u0142adnie zapisa\u0107 w systemie binarnym.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Liczba dziesi\u0119tna<\/th><th>Przybli\u017cenie binarne<\/th><\/tr><\/thead><tbody><tr><td>0,1<\/td><td>niesko\u0144czone rozwini\u0119cie<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">W Pythonie:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Python<\/th><th>Wynik<\/th><\/tr><\/thead><tbody><tr><td><code>0.1 + 0.2<\/code><\/td><td><code>0.30000000000000004<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>a = 0.1<br>b = 0.2<br><br>print(a + b)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To nie jest b\u0142\u0105d j\u0119zyka. To efekt reprezentacji liczb zmiennoprzecinkowych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W C:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>C<\/th><th>Wynik<\/th><\/tr><\/thead><tbody><tr><td><code>0.1 + 0.2<\/code><\/td><td>niedok\u0142adne przybli\u017cenie<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;<br><br>int main() {<br>    double a = 0.1;<br>    double b = 0.2;<br><br>    printf(\"%.17f\\n\", a + b);<br><br>    return 0;<br>}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W praktyce finansowej takie b\u0142\u0119dy s\u0105 bardzo niebezpieczne. System bankowy nie mo\u017ce zgubi\u0107 nawet jednego grosza przez niedok\u0142adno\u015b\u0107 reprezentacji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dlatego wiele system\u00f3w ksi\u0119gowych stosuje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>liczby ca\u0142kowite reprezentuj\u0105ce grosze,<\/li>\n\n\n\n<li>arytmetyk\u0119 sta\u0142oprzecinkow\u0105,<\/li>\n\n\n\n<li>specjalne typy decimal.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"system-dziesiatkowy-w-algorytmach-konwersji-miedzy-reprezentacjami-liczbowymi\">System dziesi\u0105tkowy w algorytmach konwersji mi\u0119dzy reprezentacjami liczbowymi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Konwersja do systemu binarnego jest jednym z podstawowych \u0107wicze\u0144 z informatyki teoretycznej.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dla liczby ca\u0142kowitej stosuje si\u0119 kolejne dzielenia przez 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad dla liczby 25:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Dzielenie<\/th><th>Reszta<\/th><\/tr><\/thead><tbody><tr><td>25 \/ 2 = 12<\/td><td>1<\/td><\/tr><tr><td>12 \/ 2 = 6<\/td><td>0<\/td><\/tr><tr><td>6 \/ 2 = 3<\/td><td>0<\/td><\/tr><tr><td>3 \/ 2 = 1<\/td><td>1<\/td><\/tr><tr><td>1 \/ 2 = 0<\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Czytaj\u0105c reszty od ko\u0144ca:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Dziesi\u0119tnie<\/th><th>Binarnie<\/th><\/tr><\/thead><tbody><tr><td>25<\/td><td>11001<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Implementacja w C:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Kod C<\/th><th>Opis<\/th><\/tr><\/thead><tbody><tr><td>dzielenie przez 2<\/td><td>generowanie kolejnych bit\u00f3w<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;<br><br>void decimalToBinary(int n) {<br>    int bits&#91;32];<br>    int i = 0;<br><br>    while(n &gt; 0) {<br>        bits&#91;i] = n % 2;<br>        n = n \/ 2;<br>        i++;<br>    }<br><br>    for(i = i - 1; i &gt;= 0; i--) {<br>        printf(\"%d\", bits&#91;i]);<br>    }<br>}<br><br>int main() {<br>    decimalToBinary(25);<br>    return 0;<br>}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W Pythonie mo\u017cna zrobi\u0107 to znacznie pro\u015bciej:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Kod Python<\/th><th>Opis<\/th><\/tr><\/thead><tbody><tr><td>funkcja <code>bin()<\/code><\/td><td>wbudowana konwersja<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>n = 25<br>print(bin(n))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Konwersja odwrotna polega na sumowaniu pot\u0119g liczby 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dla liczby binarnej 101101:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msub><mn>101101<\/mn><mn>2<\/mn><\/msub><mo>=<\/mo><mn>1<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>5<\/mn><\/msup><mo>+<\/mo><mn>0<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>4<\/mn><\/msup><mo>+<\/mo><mn>1<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>3<\/mn><\/msup><mo>+<\/mo><mn>1<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>2<\/mn><\/msup><mo>+<\/mo><mn>0<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>1<\/mn><\/msup><mo>+<\/mo><mn>1<\/mn><mo>\u22c5<\/mo><msup><mn>2<\/mn><mn>0<\/mn><\/msup><\/mrow><annotation encoding=\"application\/x-tex\">101101_2 = 1 \\cdot 2^5 + 0 \\cdot 2^4 + 1 \\cdot 2^3 + 1 \\cdot 2^2 + 0 \\cdot 2^1 + 1 \\cdot 2^0<\/annotation><\/semantics><\/math>1011012\u200b=1\u22c525+0\u22c524+1\u22c523+1\u22c522+0\u22c521+1\u22c520<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Po obliczeniu:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Sk\u0142adnik<\/th><th>Warto\u015b\u0107<\/th><\/tr><\/thead><tbody><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>1<\/mn><mo>\u22c5<\/mo><mn>32<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">1 \\cdot 32<\/annotation><\/semantics><\/math>1\u22c532<\/td><td>32<\/td><\/tr><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>0<\/mn><mo>\u22c5<\/mo><mn>16<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">0 \\cdot 16<\/annotation><\/semantics><\/math>0\u22c516<\/td><td>0<\/td><\/tr><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>1<\/mn><mo>\u22c5<\/mo><mn>8<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">1 \\cdot 8<\/annotation><\/semantics><\/math>1\u22c58<\/td><td>8<\/td><\/tr><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>1<\/mn><mo>\u22c5<\/mo><mn>4<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">1 \\cdot 4<\/annotation><\/semantics><\/math>1\u22c54<\/td><td>4<\/td><\/tr><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>0<\/mn><mo>\u22c5<\/mo><mn>2<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">0 \\cdot 2<\/annotation><\/semantics><\/math>0\u22c52<\/td><td>0<\/td><\/tr><tr><td><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>1<\/mn><mo>\u22c5<\/mo><mn>1<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">1 \\cdot 1<\/annotation><\/semantics><\/math>1\u22c51<\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Suma:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Wynik<\/th><th>Warto\u015b\u0107<\/th><\/tr><\/thead><tbody><tr><td>dziesi\u0119tnie<\/td><td>45<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Takie algorytmy s\u0105 fundamentem dzia\u0142ania kompilator\u00f3w, parser\u00f3w liczb i interpreter\u00f3w j\u0119zyk\u00f3w programowania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"reprezentacja-liczb-calkowitych-i-ograniczenia-pamieci-w-komputerach\">Reprezentacja liczb ca\u0142kowitych i ograniczenia pami\u0119ci w komputerach<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Komputer nie przechowuje liczb \u201ebez ko\u0144ca\u201d. Ka\u017cda liczba zajmuje okre\u015blon\u0105 liczb\u0119 bit\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Najcz\u0119stsze typy:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Typ<\/th><th>Rozmiar<\/th><th>Zakres<\/th><\/tr><\/thead><tbody><tr><td>uint8<\/td><td>8 bit\u00f3w<\/td><td>0\u2013255<\/td><\/tr><tr><td>int16<\/td><td>16 bit\u00f3w<\/td><td>-32768\u201332767<\/td><\/tr><tr><td>int32<\/td><td>32 bity<\/td><td>oko\u0142o \u00b12 miliardy<\/td><\/tr><tr><td>int64<\/td><td>64 bity<\/td><td>oko\u0142o \u00b19 trylion\u00f3w<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dla typu bez znaku 8-bitowego:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msup><mn>2<\/mn><mn>8<\/mn><\/msup><mo>=<\/mo><mn>256<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">2^8 = 256<\/annotation><\/semantics><\/math>28=256<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Poniewa\u017c pierwszy stan to 0, zakres ko\u0144czy si\u0119 na 255.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Problem przepe\u0142nienia jest bardzo praktyczny.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kod w C:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Kod<\/th><th>Problem<\/th><\/tr><\/thead><tbody><tr><td>przepe\u0142nienie typu<\/td><td>utrata poprawno\u015bci<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;<br><br>int main() {<br>    unsigned char x = 255;<br><br>    x = x + 1;<br><br>    printf(\"%d\\n\", x);<br><br>    return 0;<br>}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Operacja<\/th><th>Wynik<\/th><\/tr><\/thead><tbody><tr><td>255 + 1<\/td><td>0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To zjawisko nazywa si\u0119 overflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W systemach embedded taki b\u0142\u0105d mo\u017ce:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zatrzyma\u0107 sterownik,<\/li>\n\n\n\n<li>uszkodzi\u0107 pomiar czujnika,<\/li>\n\n\n\n<li>wywo\u0142a\u0107 b\u0142\u0119dne sterowanie silnikiem,<\/li>\n\n\n\n<li>zniszczy\u0107 dane telemetryczne.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">W praktyce przemys\u0142owej overflow jest jednym z najcz\u0119stszych \u017ar\u00f3de\u0142 trudnych do wykrycia b\u0142\u0119d\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"operacje-arytmetyczne-wykonywane-pozycyjnie-i-ich-implementacja-w-programach\">Operacje arytmetyczne wykonywane pozycyjnie i ich implementacja w programach<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dodawanie w systemie dziesi\u0119tnym jest algorytmem pozycyjnym. Cz\u0142owiek wykonuje je kolumnowo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Operacja<\/th><th>Wynik<\/th><\/tr><\/thead><tbody><tr><td>458 + 376<\/td><td>834<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Rozpisanie:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Kolumna<\/th><th>Dzia\u0142anie<\/th><\/tr><\/thead><tbody><tr><td>jedno\u015bci<\/td><td>8 + 6 = 14<\/td><\/tr><tr><td>dziesi\u0105tki<\/td><td>5 + 7 + 1 = 13<\/td><\/tr><tr><td>setki<\/td><td>4 + 3 + 1 = 8<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Mechanizm przeniesienia jest identyczny jak w procesorze.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dodawanie binarne:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>A<\/th><th>B<\/th><th>Wynik<\/th><\/tr><\/thead><tbody><tr><td>0<\/td><td>0<\/td><td>0<\/td><\/tr><tr><td>0<\/td><td>1<\/td><td>1<\/td><\/tr><tr><td>1<\/td><td>0<\/td><td>1<\/td><\/tr><tr><td>1<\/td><td>1<\/td><td>10<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ostatni przypadek generuje przeniesienie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Procesory implementuj\u0105 to sprz\u0119towo przez:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>p\u00f3\u0142sumatory,<\/li>\n\n\n\n<li>pe\u0142ne sumatory,<\/li>\n\n\n\n<li>uk\u0142ady logiczne XOR, AND, OR.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Prosty przyk\u0142ad dodawania binarnego:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><msub><mn>1011<\/mn><mn>2<\/mn><\/msub><mo>+<\/mo><msub><mn>0110<\/mn><mn>2<\/mn><\/msub><mo>=<\/mo><msub><mn>10001<\/mn><mn>2<\/mn><\/msub><\/mrow><annotation encoding=\"application\/x-tex\">1011_2 + 0110_2 = 10001_2<\/annotation><\/semantics><\/math>10112\u200b+01102\u200b=100012\u200b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W j\u0119zykach programowania wi\u0119kszo\u015b\u0107 tych operacji jest ukryta, ale czasami trzeba je rozumie\u0107 bardzo dok\u0142adnie, zw\u0142aszcza podczas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>optymalizacji,<\/li>\n\n\n\n<li>programowania sterownik\u00f3w,<\/li>\n\n\n\n<li>pracy z kryptografi\u0105,<\/li>\n\n\n\n<li>implementacji kompresji danych.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"liczby-zmiennoprzecinkowe-i-problem-niedokladnosci-reprezentacji-wartosci-dziesietnych\">Liczby zmiennoprzecinkowe i problem niedok\u0142adno\u015bci reprezentacji warto\u015bci dziesi\u0119tnych<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">IEEE 754 jest standardem reprezentacji liczb zmiennoprzecinkowych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Liczba float sk\u0142ada si\u0119 z:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Element<\/th><th>Znaczenie<\/th><\/tr><\/thead><tbody><tr><td>bit znaku<\/td><td>dodatnia\/ujemna<\/td><\/tr><tr><td>wyk\u0142adnik<\/td><td>skala<\/td><\/tr><tr><td>mantysa<\/td><td>cz\u0119\u015b\u0107 znacz\u0105ca<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dla float32:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Pole<\/th><th>Liczba bit\u00f3w<\/th><\/tr><\/thead><tbody><tr><td>znak<\/td><td>1<\/td><\/tr><tr><td>wyk\u0142adnik<\/td><td>8<\/td><\/tr><tr><td>mantysa<\/td><td>23<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To daje ogromny zakres liczb, ale kosztem dok\u0142adno\u015bci.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad problemu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>x = 0.1<br><br>for i in range(10):<br>    x += 0.1<br><br>print(x)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Oczekiwane:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Oczekiwane<\/th><th>Faktyczne<\/th><\/tr><\/thead><tbody><tr><td>1.1<\/td><td>1.099999999&#8230;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">W praktyce in\u017cynierskiej por\u00f3wnywanie float\u00f3w operatorem <code>==<\/code> jest cz\u0119stym b\u0142\u0119dem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zamiast:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>a == b<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">stosuje si\u0119:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>abs(a - b) &lt; 0.000001<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W symulacjach fizycznych b\u0142\u0119dy zmiennoprzecinkowe potrafi\u0105 narasta\u0107 przez tysi\u0105ce iteracji. W grafice 3D prowadzi to do drga\u0144 obiekt\u00f3w, b\u0142\u0119d\u00f3w kolizji albo niestabilno\u015bci kamery.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"zastosowania-systemow-liczbowych-w-sieciach-komputerowych-kryptografii-i-programowaniu-niskopoziomowym\">Zastosowania system\u00f3w liczbowych w sieciach komputerowych, kryptografii i programowaniu niskopoziomowym<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Adres IPv4 wygl\u0105da dziesi\u0119tnie:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Adres<\/th><th>Posta\u0107<\/th><\/tr><\/thead><tbody><tr><td>192.168.1.1<\/td><td>zapis dziesi\u0119tny<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">W rzeczywisto\u015bci to cztery bajty:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Segment<\/th><th>Binarnie<\/th><\/tr><\/thead><tbody><tr><td>192<\/td><td>11000000<\/td><\/tr><tr><td>168<\/td><td>10101000<\/td><\/tr><tr><td>1<\/td><td>00000001<\/td><\/tr><tr><td>1<\/td><td>00000001<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Maski sieciowe opieraj\u0105 si\u0119 na bitach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dla maski \/24:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>11111111.11111111.11111111.00000000<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">11111111.11111111.11111111.00000000<\/annotation><\/semantics><\/math>11111111.11111111.11111111.00000000<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W kryptografii liczby s\u0105 jeszcze wi\u0119ksze. Algorytm RSA u\u017cywa liczb maj\u0105cych setki lub tysi\u0105ce bit\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>klucz RSA 2048 ma d\u0142ugo\u015b\u0107 2048 bit\u00f3w,<\/li>\n\n\n\n<li>to oko\u0142o 617 cyfr dziesi\u0119tnych,<\/li>\n\n\n\n<li>zwyk\u0142y typ <code>int64<\/code> jest za ma\u0142y.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dlatego biblioteki kryptograficzne implementuj\u0105 arytmetyk\u0119 wielkich liczb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W C++:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Biblioteka<\/th><th>Zastosowanie<\/th><\/tr><\/thead><tbody><tr><td>GMP<\/td><td>liczby arbitralnej d\u0142ugo\u015bci<\/td><\/tr><tr><td>OpenSSL BIGNUM<\/td><td>kryptografia<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Bez takich mechanizm\u00f3w niemo\u017cliwe by\u0142oby:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>szyfrowanie HTTPS,<\/li>\n\n\n\n<li>podpis cyfrowy,<\/li>\n\n\n\n<li>blockchain,<\/li>\n\n\n\n<li>certyfikaty TLS.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"system-dziesiatkowy-w-kontekscie-edukacji-matematycznej-oraz-rozwoju-myslenia-algorytmicznego\">System dziesi\u0105tkowy w kontek\u015bcie edukacji matematycznej oraz rozwoju my\u015blenia algorytmicznego<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dla wielu os\u00f3b nauka system\u00f3w liczbowych ko\u0144czy si\u0119 na podstaw\u00f3wce. Potem pojawia si\u0119 przekonanie, \u017ce to tylko \u201ecyferki\u201d. W praktyce brak zrozumienia pozycyjno\u015bci utrudnia p\u00f3\u017aniej:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>debugowanie,<\/li>\n\n\n\n<li>analiz\u0119 pami\u0119ci,<\/li>\n\n\n\n<li>prac\u0119 z protoko\u0142ami sieciowymi,<\/li>\n\n\n\n<li>rozumienie reprezentacji danych.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ucze\u0144, kt\u00f3ry rozumie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>pot\u0119gi podstawy,<\/li>\n\n\n\n<li>reprezentacj\u0119 binarn\u0105,<\/li>\n\n\n\n<li>przeniesienia,<\/li>\n\n\n\n<li>zakresy typ\u00f3w,<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">znacznie szybciej rozumie p\u00f3\u017aniej:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>wska\u017aniki,<\/li>\n\n\n\n<li>kodowanie UTF,<\/li>\n\n\n\n<li>kompresj\u0119,<\/li>\n\n\n\n<li>hashowanie,<\/li>\n\n\n\n<li>kryptografi\u0119.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Bardzo cz\u0119sto problemy pocz\u0105tkuj\u0105cych programist\u00f3w nie wynikaj\u0105 z trudno\u015bci j\u0119zyka, tylko z braku fundament\u00f3w matematycznych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad b\u0142\u0119dnego my\u015blenia:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Problem<\/th><th>Rzeczywista przyczyna<\/th><\/tr><\/thead><tbody><tr><td>\u201ekomputer \u017ale liczy\u201d<\/td><td>niedok\u0142adno\u015b\u0107 float<\/td><\/tr><tr><td>\u201ewarto\u015b\u0107 si\u0119 zepsu\u0142a\u201d<\/td><td>overflow<\/td><\/tr><tr><td>\u201esie\u0107 nie dzia\u0142a\u201d<\/td><td>b\u0142\u0119dna maska binarna<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Te problemy wracaj\u0105 przez ca\u0142e \u017cycie zawodowe programisty.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"typowe-bledy-podczas-pracy-z-liczbami-i-sytuacje-prowadzace-do-trudnych-awarii-systemow\">Typowe b\u0142\u0119dy podczas pracy z liczbami i sytuacje prowadz\u0105ce do trudnych awarii system\u00f3w<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Najcz\u0119stsze b\u0142\u0119dy:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Problem<\/th><th>Skutek<\/th><\/tr><\/thead><tbody><tr><td>overflow<\/td><td>b\u0142\u0119dne dane<\/td><\/tr><tr><td>underflow<\/td><td>utrata dok\u0142adno\u015bci<\/td><\/tr><tr><td>por\u00f3wnywanie float\u00f3w<\/td><td>b\u0142\u0119dne warunki<\/td><\/tr><tr><td>b\u0142\u0119dna konwersja typ\u00f3w<\/td><td>utrata informacji<\/td><\/tr><tr><td>u\u017cywanie z\u0142ego zakresu<\/td><td>awarie<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad w C++:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;<br><br>int main() {<br>    int a = 2000000000;<br>    int b = 2000000000;<br><br>    int c = a + b;<br><br>    std::cout &lt;&lt; c &lt;&lt; std::endl;<br><br>    return 0;<br>}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik mo\u017ce by\u0107 ujemny przez przepe\u0142nienie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W systemach czasu rzeczywistego takie sytuacje s\u0105 szczeg\u00f3lnie niebezpieczne. Sterownik mo\u017ce otrzyma\u0107 warto\u015b\u0107 spoza zakresu i wykona\u0107 fizycznie niebezpieczne dzia\u0142anie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dlatego w praktyce przemys\u0142owej stosuje si\u0119:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>walidacj\u0119 zakres\u00f3w,<\/li>\n\n\n\n<li>typy o wi\u0119kszej precyzji,<\/li>\n\n\n\n<li>testy graniczne,<\/li>\n\n\n\n<li>analiz\u0119 statyczn\u0105 kodu,<\/li>\n\n\n\n<li>arytmetyk\u0119 bezpieczn\u0105.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dlaczego-komputer-uzywa-systemu-binarnego-zamiast-dziesietnego\">Dlaczego komputer u\u017cywa systemu binarnego zamiast dziesi\u0119tnego?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Elektronika cyfrowa \u0142atwo rozr\u00f3\u017cnia dwa stany: obecno\u015b\u0107 napi\u0119cia i jego brak. Implementacja dziesi\u0119ciu stabilnych poziom\u00f3w napi\u0119cia by\u0142aby znacznie trudniejsza i bardziej podatna na zak\u0142\u00f3cenia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czy-liczba-0-1-moze-byc-dokladnie-zapisana-binarnie\">Czy liczba 0,1 mo\u017ce by\u0107 dok\u0142adnie zapisana binarnie?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nie. W systemie binarnym 0,1 ma niesko\u0144czone rozwini\u0119cie okresowe, podobnie jak 1\/3 w systemie dziesi\u0119tnym.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dlaczego-przepelnienie-typu-jest-grozne\">Dlaczego przepe\u0142nienie typu jest gro\u017ane?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bo program zwykle nie zg\u0142asza b\u0142\u0119du. Wynik po prostu \u201ezawija si\u0119\u201d do innej warto\u015bci, co mo\u017ce prowadzi\u0107 do b\u0142\u0119dnych decyzji systemu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"po-co-programiscie-znajomosc-systemow-liczbowych\">Po co programi\u015bcie znajomo\u015b\u0107 system\u00f3w liczbowych?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bez tego trudno poprawnie rozumie\u0107 pami\u0119\u0107, reprezentacj\u0119 danych, protoko\u0142y sieciowe, operacje bitowe i ograniczenia sprz\u0119tu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dlaczego-liczby-float-nie-nadaja-sie-do-finansow\">Dlaczego liczby float nie nadaj\u0105 si\u0119 do finans\u00f3w?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Poniewa\u017c reprezentuj\u0105 warto\u015bci przybli\u017cone. W finansach nawet minimalny b\u0142\u0105d zaokr\u0105glenia mo\u017ce powodowa\u0107 realne straty.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czym-rozni-sie-liczba-calkowita-od-zmiennoprzecinkowej\">Czym r\u00f3\u017cni si\u0119 liczba ca\u0142kowita od zmiennoprzecinkowej?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Liczba ca\u0142kowita przechowuje dok\u0142adn\u0105 warto\u015b\u0107 bez cz\u0119\u015bci u\u0142amkowej. Float przechowuje przybli\u017cenie liczby rzeczywistej.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dlaczego-adres-ip-zapisuje-sie-dziesietnie-skoro-komputer-uzywa-bitow\">Dlaczego adres IP zapisuje si\u0119 dziesi\u0119tnie, skoro komputer u\u017cywa bit\u00f3w?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dla cz\u0142owieka zapis binarny by\u0142by niewygodny. Dziesi\u0119tny zapis IPv4 jest tylko reprezentacj\u0105 czyteln\u0105 dla u\u017cytkownika.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czy-istnieja-komputery-dziesietne\">Czy istniej\u0105 komputery dziesi\u0119tne?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tak, ale s\u0105 rzadkie. Niekt\u00f3re kalkulatory i specjalistyczne systemy finansowe u\u017cywaj\u0105 arytmetyki dziesi\u0119tnej.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u0179r\u00f3d\u0142o Foto: Freepik<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Liczby zapisane w codziennych obliczeniach wygl\u0105daj\u0105 pozornie banalnie. Cz\u0142owiek wpisuje 2026, 3,14 albo 150000 i rzadko zastanawia si\u0119, dlaczego akurat taki zapis dzia\u0142a. Dopiero podczas programowania parser\u00f3w, implementacji arytmetyki w procesorach albo analizy reprezentacji danych wychodzi na jaw, \u017ce spos\u00f3b zapisu liczby ma ogromne znaczenie dla szybko\u015bci oblicze\u0144, zu\u017cycia pami\u0119ci i odporno\u015bci na b\u0142\u0119dy. W praktyce informatycznej problemy zaczynaj\u0105 si\u0119 bardzo szybko: przepe\u0142nienia typ\u00f3w, b\u0142\u0119dy zaokr\u0105gle\u0144, niepoprawne konwersje mi\u0119dzy systemami pozycyjnymi albo b\u0142\u0119dne interpretowanie danych binarnych. W takich sytuacjach fundamentem staje si\u0119 System dziesi\u0105tkowy i jego matematyczna konstrukcja. System dziesi\u0105tkowy jako pozycyjny spos\u00f3b zapisu liczb oparty na podstawie dziesi\u0119\u0107 System dziesi\u0105tkowy jest pozycyjnym systemem liczbowym o podstawie 10. Oznacza to, \u017ce ka\u017cda pozycja cyfry w liczbie reprezentuje kolejn\u0105 pot\u0119g\u0119 liczby 10. Cz\u0142owiek u\u017cywa dziesi\u0119ciu cyfr: Cyfra Warto\u015b\u0107 0 zero 1 jeden 2 dwa 3 trzy 4 cztery 5 pi\u0119\u0107 6 sze\u015b\u0107 7 siedem 8 osiem 9 dziewi\u0119\u0107 Kluczowe jest tutaj poj\u0119cie pozycyjno\u015bci. W liczbie 582 cyfra 5 nie oznacza po prostu \u201epi\u0119\u0107\u201d. Ona oznacza pi\u0119\u0107 setek. Pozycja Cyfra Warto\u015b\u0107 10210^2102 5 500 10110^1101 8 80 10010^0100 2 2 Ca\u0142\u0105 liczb\u0119 mo\u017cna wi\u0119c rozpisa\u0107: 582=5\u22c5102+8\u22c5101+2\u22c5100582 = 5 \\cdot 10^2 + 8 \\cdot 10^1 + 2 \\cdot 10^0582=5\u22c5102+8\u22c5101+2\u22c5100 To samo dzia\u0142a dla liczb u\u0142amkowych. Pozycja Cyfra Warto\u015b\u0107 10010^0100 3 3 10\u2212110^{-1}10\u22121 1 0,1 10\u2212210^{-2}10\u22122 4 0,04 Dla liczby 3,14: 3,14=3\u22c5100+1\u22c510\u22121+4\u22c510\u221223{,}14 = 3 \\cdot 10^0 + 1 \\cdot 10^{-1} + 4 \\cdot 10^{-2}3,14=3\u22c5100+1\u22c510\u22121+4\u22c510\u22122 To w\u0142a\u015bnie pot\u0119gi podstawy s\u0105 najwa\u017cniejszym elementem ka\u017cdego pozycyjnego systemu liczbowego. W systemie binarnym podstaw\u0105 jest 2, w \u00f3semkowym 8, a w szesnastkowym 16. Warto zauwa\u017cy\u0107 praktyczny aspekt pozycyjno\u015bci. Gdyby zapis nie by\u0142 pozycyjny, trzeba by\u0142oby stosowa\u0107 ogromn\u0105 liczb\u0119 symboli. System rzymski jest dobrym przyk\u0142adem problemu. Liczba 3888 wygl\u0105da tam tak: System Zapis Dziesi\u0119tny 3888 Rzymski MMMDCCCLXXXVIII W systemie rzymskim praktycznie nie da si\u0119 efektywnie implementowa\u0107 algorytm\u00f3w arytmetycznych. Dodawanie czy mno\u017cenie wymaga manipulacji symbolami zamiast prostych operacji pozycyjnych. Dlaczego cz\u0142owiek u\u017cywa podstawy dziesi\u0119\u0107 i jakie ma to konsekwencje w informatyce Najcz\u0119\u015bciej przyjmuje si\u0119, \u017ce wyb\u00f3r podstawy 10 wynika z anatomii cz\u0142owieka. Dziesi\u0119\u0107 palc\u00f3w u\u0142atwia\u0142o liczenie ju\u017c w staro\u017cytno\u015bci. Z perspektywy informatyki nie jest to jednak rozwi\u0105zanie idealne. Procesory pracuj\u0105 binarnie. Dla elektroniki du\u017co prostsze jest rozr\u00f3\u017cnianie dw\u00f3ch stan\u00f3w: Stan Interpretacja brak napi\u0119cia 0 napi\u0119cie obecne 1 Dlatego komputer wewn\u0119trznie nie przechowuje liczb dziesi\u0119tnych w postaci znak\u00f3w \u201e0-9\u201d. Zamiast tego u\u017cywa reprezentacji binarnej. Liczba dziesi\u0119tna 13 wygl\u0105da tak: System Zapis Dziesi\u0119tny 13 Binarny 1101 Rozwini\u0119cie pozycyjne: 11012=1\u22c523+1\u22c522+0\u22c521+1\u22c5201101_2 = 1 \\cdot 2^3 + 1 \\cdot 2^2 + 0 \\cdot 2^1 + 1 \\cdot 2^011012\u200b=1\u22c523+1\u22c522+0\u22c521+1\u22c520 To prowadzi do bardzo wa\u017cnego problemu praktycznego. Nie ka\u017cd\u0105 liczb\u0119 dziesi\u0119tn\u0105 mo\u017cna dok\u0142adnie zapisa\u0107 w systemie binarnym. Przyk\u0142ad: Liczba dziesi\u0119tna Przybli\u017cenie binarne 0,1 niesko\u0144czone rozwini\u0119cie W Pythonie: Python Wynik 0.1 + 0.2 0.30000000000000004 To nie jest b\u0142\u0105d j\u0119zyka. To efekt reprezentacji liczb zmiennoprzecinkowych. W C: C Wynik 0.1 + 0.2 niedok\u0142adne przybli\u017cenie W praktyce finansowej takie b\u0142\u0119dy s\u0105 bardzo niebezpieczne. System bankowy nie mo\u017ce zgubi\u0107 nawet jednego grosza przez niedok\u0142adno\u015b\u0107 reprezentacji. Dlatego wiele system\u00f3w ksi\u0119gowych stosuje: System dziesi\u0105tkowy w algorytmach konwersji mi\u0119dzy reprezentacjami liczbowymi Konwersja do systemu binarnego jest jednym z podstawowych \u0107wicze\u0144 z informatyki teoretycznej. Dla liczby ca\u0142kowitej stosuje si\u0119 kolejne dzielenia przez 2. Przyk\u0142ad dla liczby 25: Dzielenie Reszta 25 \/ 2 = 12 1 12 \/ 2 = 6 0 6 \/ 2 = 3 0 3 \/ 2 = 1 1 1 \/ 2 = 0 1 Czytaj\u0105c reszty od ko\u0144ca: Dziesi\u0119tnie Binarnie 25 11001 Implementacja w C: Kod C Opis dzielenie przez 2 generowanie kolejnych bit\u00f3w W Pythonie mo\u017cna zrobi\u0107 to znacznie pro\u015bciej: Kod Python Opis funkcja bin() wbudowana konwersja Konwersja odwrotna polega na sumowaniu pot\u0119g liczby 2. Dla liczby binarnej 101101: 1011012=1\u22c525+0\u22c524+1\u22c523+1\u22c522+0\u22c521+1\u22c520101101_2 = 1 \\cdot 2^5 + 0 \\cdot 2^4 + 1 \\cdot 2^3 + 1 \\cdot 2^2 + 0 \\cdot 2^1 + 1 \\cdot 2^01011012\u200b=1\u22c525+0\u22c524+1\u22c523+1\u22c522+0\u22c521+1\u22c520 Po obliczeniu: Sk\u0142adnik Warto\u015b\u0107 1\u22c5321 \\cdot 321\u22c532 32 0\u22c5160 \\cdot 160\u22c516 0 1\u22c581 \\cdot 81\u22c58 8 1\u22c541 \\cdot 41\u22c54 4 0\u22c520 \\cdot 20\u22c52 0 1\u22c511 \\cdot 11\u22c51 1 Suma: Wynik Warto\u015b\u0107 dziesi\u0119tnie 45 Takie algorytmy s\u0105 fundamentem dzia\u0142ania kompilator\u00f3w, parser\u00f3w liczb i interpreter\u00f3w j\u0119zyk\u00f3w programowania. Reprezentacja liczb ca\u0142kowitych i ograniczenia pami\u0119ci w komputerach Komputer nie przechowuje liczb \u201ebez ko\u0144ca\u201d. Ka\u017cda liczba zajmuje okre\u015blon\u0105 liczb\u0119 bit\u00f3w. Najcz\u0119stsze typy: Typ Rozmiar Zakres uint8 8 bit\u00f3w 0\u2013255 int16 16 bit\u00f3w -32768\u201332767 int32 32 bity oko\u0142o \u00b12 miliardy int64 64 bity oko\u0142o \u00b19 trylion\u00f3w Dla typu bez znaku 8-bitowego: 28=2562^8 = 25628=256 Poniewa\u017c pierwszy stan to 0, zakres ko\u0144czy si\u0119 na 255. Problem przepe\u0142nienia jest bardzo praktyczny. Kod w C: Kod Problem przepe\u0142nienie typu utrata poprawno\u015bci Wynik: Operacja Wynik 255 + 1 0 To zjawisko nazywa si\u0119 overflow. W systemach embedded taki b\u0142\u0105d mo\u017ce: W praktyce przemys\u0142owej overflow jest jednym z najcz\u0119stszych \u017ar\u00f3de\u0142 trudnych do wykrycia b\u0142\u0119d\u00f3w. Operacje arytmetyczne wykonywane pozycyjnie i ich implementacja w programach Dodawanie w systemie dziesi\u0119tnym jest algorytmem pozycyjnym. Cz\u0142owiek wykonuje je kolumnowo. Przyk\u0142ad: Operacja Wynik 458 + 376 834 Rozpisanie: Kolumna Dzia\u0142anie jedno\u015bci 8 + 6 = 14 dziesi\u0105tki 5 + 7 + 1 = 13 setki 4 + 3 + 1 = 8 Mechanizm przeniesienia jest identyczny jak w procesorze. Dodawanie binarne: A B Wynik 0 0 0 0 1 1 1 0 1 1 1 10 Ostatni przypadek generuje przeniesienie. Procesory implementuj\u0105 to sprz\u0119towo przez: Prosty przyk\u0142ad dodawania binarnego: 10112+01102=1000121011_2 + 0110_2 = 10001_210112\u200b+01102\u200b=100012\u200b W j\u0119zykach programowania wi\u0119kszo\u015b\u0107 tych operacji jest ukryta, ale czasami trzeba je rozumie\u0107 bardzo dok\u0142adnie, zw\u0142aszcza podczas: Liczby zmiennoprzecinkowe i problem niedok\u0142adno\u015bci reprezentacji warto\u015bci dziesi\u0119tnych IEEE 754 jest standardem reprezentacji liczb zmiennoprzecinkowych. Liczba float sk\u0142ada si\u0119 z: Element Znaczenie bit znaku dodatnia\/ujemna wyk\u0142adnik skala mantysa cz\u0119\u015b\u0107 znacz\u0105ca Dla float32: Pole Liczba bit\u00f3w znak 1 wyk\u0142adnik 8 mantysa 23 To daje ogromny zakres liczb, ale kosztem dok\u0142adno\u015bci. Przyk\u0142ad problemu: Oczekiwane: Oczekiwane Faktyczne 1.1 1.099999999&#8230; W praktyce in\u017cynierskiej por\u00f3wnywanie float\u00f3w operatorem == jest cz\u0119stym b\u0142\u0119dem. Zamiast: stosuje si\u0119: W symulacjach fizycznych b\u0142\u0119dy zmiennoprzecinkowe potrafi\u0105 narasta\u0107 przez tysi\u0105ce iteracji. W grafice 3D prowadzi to do drga\u0144 obiekt\u00f3w, b\u0142\u0119d\u00f3w kolizji albo niestabilno\u015bci kamery. Zastosowania system\u00f3w liczbowych w sieciach komputerowych, kryptografii i programowaniu niskopoziomowym Adres IPv4 wygl\u0105da dziesi\u0119tnie: Adres Posta\u0107 192.168.1.1 zapis dziesi\u0119tny W rzeczywisto\u015bci to cztery bajty: Segment Binarnie 192 11000000 168 10101000 1 00000001 1 00000001 Maski sieciowe opieraj\u0105 si\u0119 na bitach. Dla maski \/24: 11111111.11111111.11111111.0000000011111111.11111111.11111111.0000000011111111.11111111.11111111.00000000 W kryptografii liczby s\u0105 jeszcze wi\u0119ksze. Algorytm RSA u\u017cywa liczb maj\u0105cych setki lub tysi\u0105ce bit\u00f3w. Przyk\u0142adowo: Dlatego biblioteki kryptograficzne implementuj\u0105 arytmetyk\u0119 wielkich liczb. W C++: Biblioteka Zastosowanie GMP liczby arbitralnej d\u0142ugo\u015bci OpenSSL BIGNUM kryptografia Bez takich mechanizm\u00f3w niemo\u017cliwe by\u0142oby: System dziesi\u0105tkowy w kontek\u015bcie edukacji matematycznej oraz rozwoju my\u015blenia algorytmicznego Dla wielu os\u00f3b nauka system\u00f3w liczbowych ko\u0144czy si\u0119 na podstaw\u00f3wce. Potem pojawia si\u0119 przekonanie, \u017ce to tylko \u201ecyferki\u201d. W praktyce brak zrozumienia pozycyjno\u015bci utrudnia p\u00f3\u017aniej: Ucze\u0144, kt\u00f3ry rozumie: znacznie szybciej rozumie p\u00f3\u017aniej: Bardzo cz\u0119sto problemy pocz\u0105tkuj\u0105cych programist\u00f3w nie wynikaj\u0105 z trudno\u015bci j\u0119zyka, tylko z braku fundament\u00f3w matematycznych. Przyk\u0142ad b\u0142\u0119dnego my\u015blenia: Problem Rzeczywista przyczyna \u201ekomputer \u017ale liczy\u201d niedok\u0142adno\u015b\u0107 float \u201ewarto\u015b\u0107 si\u0119 zepsu\u0142a\u201d overflow \u201esie\u0107 nie dzia\u0142a\u201d b\u0142\u0119dna maska binarna Te problemy wracaj\u0105 przez ca\u0142e \u017cycie zawodowe programisty. Typowe b\u0142\u0119dy podczas pracy z liczbami i sytuacje prowadz\u0105ce do trudnych awarii system\u00f3w Najcz\u0119stsze b\u0142\u0119dy: Problem Skutek overflow b\u0142\u0119dne dane underflow utrata dok\u0142adno\u015bci por\u00f3wnywanie float\u00f3w b\u0142\u0119dne warunki b\u0142\u0119dna konwersja typ\u00f3w utrata informacji u\u017cywanie z\u0142ego zakresu awarie Przyk\u0142ad w C++: Wynik mo\u017ce by\u0107 ujemny przez przepe\u0142nienie. W systemach czasu rzeczywistego takie sytuacje s\u0105 szczeg\u00f3lnie niebezpieczne. Sterownik mo\u017ce otrzyma\u0107 warto\u015b\u0107 spoza zakresu i wykona\u0107 fizycznie niebezpieczne dzia\u0142anie. Dlatego w praktyce przemys\u0142owej stosuje si\u0119: FAQ Dlaczego komputer u\u017cywa systemu binarnego zamiast dziesi\u0119tnego? Elektronika cyfrowa \u0142atwo rozr\u00f3\u017cnia dwa stany: obecno\u015b\u0107 napi\u0119cia i jego brak. Implementacja dziesi\u0119ciu stabilnych poziom\u00f3w napi\u0119cia by\u0142aby znacznie trudniejsza i bardziej podatna na zak\u0142\u00f3cenia. Czy liczba 0,1 mo\u017ce by\u0107 dok\u0142adnie zapisana binarnie? Nie. W systemie binarnym 0,1 ma niesko\u0144czone rozwini\u0119cie okresowe, podobnie jak 1\/3 w systemie dziesi\u0119tnym. Dlaczego przepe\u0142nienie typu jest gro\u017ane? Bo program zwykle nie zg\u0142asza b\u0142\u0119du. Wynik po prostu \u201ezawija si\u0119\u201d do innej warto\u015bci, co mo\u017ce prowadzi\u0107 do b\u0142\u0119dnych decyzji systemu. Po co programi\u015bcie znajomo\u015b\u0107 system\u00f3w liczbowych? Bez tego trudno poprawnie rozumie\u0107 pami\u0119\u0107, reprezentacj\u0119 danych, protoko\u0142y sieciowe, operacje bitowe i ograniczenia sprz\u0119tu. Dlaczego liczby float nie nadaj\u0105 si\u0119 do finans\u00f3w? Poniewa\u017c reprezentuj\u0105 warto\u015bci przybli\u017cone. W finansach nawet minimalny b\u0142\u0105d zaokr\u0105glenia mo\u017ce powodowa\u0107 realne straty. Czym r\u00f3\u017cni si\u0119 liczba ca\u0142kowita od zmiennoprzecinkowej? Liczba ca\u0142kowita przechowuje dok\u0142adn\u0105 warto\u015b\u0107 bez cz\u0119\u015bci u\u0142amkowej. Float przechowuje przybli\u017cenie liczby rzeczywistej. Dlaczego adres IP zapisuje si\u0119 dziesi\u0119tnie, skoro komputer u\u017cywa bit\u00f3w? Dla cz\u0142owieka zapis binarny by\u0142by niewygodny. Dziesi\u0119tny zapis IPv4 jest tylko reprezentacj\u0105 czyteln\u0105 dla u\u017cytkownika. Czy istniej\u0105 komputery dziesi\u0119tne? Tak, ale s\u0105 rzadkie. Niekt\u00f3re kalkulatory i specjalistyczne systemy finansowe u\u017cywaj\u0105 arytmetyki dziesi\u0119tnej. \u0179r\u00f3d\u0142o Foto: Freepik<\/p>\n","protected":false},"author":1,"featured_media":1573,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,1],"tags":[],"class_list":["post-1572","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kodowanie","category-poradnik"],"_links":{"self":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1572"}],"version-history":[{"count":1,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1572\/revisions"}],"predecessor-version":[{"id":1574,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1572\/revisions\/1574"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media\/1573"}],"wp:attachment":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/categories?post=1572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/tags?post=1572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}