{"id":1416,"date":"2026-04-07T13:08:30","date_gmt":"2026-04-07T11:08:30","guid":{"rendered":"https:\/\/trzykody.pl\/?p=1416"},"modified":"2026-04-21T13:17:30","modified_gmt":"2026-04-21T11:17:30","slug":"bin-zwraca-binarna-reprezentacje-liczby-calkowitej-jako-string","status":"publish","type":"post","link":"https:\/\/trzykody.pl\/index.php\/2026\/04\/07\/bin-zwraca-binarna-reprezentacje-liczby-calkowitej-jako-string\/","title":{"rendered":"Bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Systemy komputerowe operuj\u0105 na bitach, ale cz\u0142owiek najcz\u0119\u015bciej my\u015bli w systemie dziesi\u0119tnym. W\u0142a\u015bnie dlatego konwersja liczb mi\u0119dzy r\u00f3\u017cnymi systemami zapisu jest jedn\u0105 z podstaw pracy z programowaniem, algorytmami i analiz\u0105 dzia\u0142ania pami\u0119ci. Szczeg\u00f3lnie cz\u0119sto pojawia si\u0119 potrzeba szybkiego sprawdzenia, jak dana warto\u015b\u0107 wygl\u0105da na poziomie bit\u00f3w, na przyk\u0142ad podczas pracy z maskami bitowymi, flagami lub operacjami przesuni\u0119\u0107. W praktyce codziennej pracy z liczbami ca\u0142kowitymi bardzo cz\u0119sto pojawia si\u0119 operacja bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string.<\/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=\"#podstawy-dzialania-funkcji-i-znaczenie-zapisu-binarnego-w-codziennej-pracy-programisty\">Podstawy dzia\u0142ania funkcji i znaczenie zapisu binarnego w codziennej pracy programisty<\/a><ol><li><a href=\"#najprostsze-przyklady-dzialania-funkcji\">Najprostsze przyk\u0142ady dzia\u0142ania funkcji<\/a><\/li><\/ol><\/li><li><a href=\"#bin-zwraca-binarna-reprezentacje-liczby-calkowitej-jako-string-i-pokazuje-rzeczywisty-zapis-bitowy-wartosci\">bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string i pokazuje rzeczywisty zapis bitowy warto\u015bci<\/a><ol><li><a href=\"#matematyczna-interpretacja\">Matematyczna interpretacja<\/a><\/li><li><a href=\"#reczna-implementacja-konwersji-w-pythonie\">R\u0119czna implementacja konwersji w Pythonie<\/a><\/li><li><a href=\"#odpowiednik-w-c\">Odpowiednik w C<\/a><\/li><\/ol><\/li><li><a href=\"#bin-zwraca-binarna-reprezentacje-liczby-calkowitej-jako-string-w-praktyce-debugowania-i-analizy-algorytmow\">bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string w praktyce debugowania i analizy algorytm\u00f3w<\/a><ol><li><a href=\"#przyklad-z-maska-bitowa\">Przyk\u0142ad z mask\u0105 bitow\u0105<\/a><\/li><\/ol><\/li><li><a href=\"#odpowiedniki-w-c-php-i-roznice-miedzy-jezykami\">Odpowiedniki w C++, PHP i r\u00f3\u017cnice mi\u0119dzy j\u0119zykami<\/a><ol><li><a href=\"#c\">C++<\/a><\/li><\/ol><\/li><li><a href=\"#najczestsze-bledy-i-praktyczne-pulapki\">Najcz\u0119stsze b\u0142\u0119dy i praktyczne pu\u0142apki<\/a><ol><li><a href=\"#traktowanie-wyniku-jako-liczby\">Traktowanie wyniku jako liczby<\/a><\/li><li><a href=\"#zapominanie-o-prefiksie-0-b\">Zapominanie o prefiksie 0b<\/a><\/li><li><a href=\"#niezrozumienie-liczb-ujemnych\">Niezrozumienie liczb ujemnych<\/a><\/li><\/ol><\/li><li><a href=\"#faq\">FAQ<\/a><ol><li><a href=\"#czy-bin-dziala-dla-liczb-zmiennoprzecinkowych\">Czy bin() dzia\u0142a dla liczb zmiennoprzecinkowych?<\/a><\/li><li><a href=\"#czy-mozna-odwrocic-dzialanie-bin\">Czy mo\u017cna odwr\u00f3ci\u0107 dzia\u0142anie bin()?<\/a><\/li><li><a href=\"#czy-format-jest-lepsze-niz-bin\">Czy format() jest lepsze ni\u017c bin()?<\/a><\/li><li><a href=\"#czy-bin-dziala-dla-bardzo-duzych-liczb\">Czy bin() dzia\u0142a dla bardzo du\u017cych liczb?<\/a><\/li><li><a href=\"#czy-wynik-mozna-wykorzystac-w-algorytmach\">Czy wynik mo\u017cna wykorzysta\u0107 w algorytmach?<\/a><\/li><\/ol><\/li><\/ol><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"podstawy-dzialania-funkcji-i-znaczenie-zapisu-binarnego-w-codziennej-pracy-programisty\">Podstawy dzia\u0142ania funkcji i znaczenie zapisu binarnego w codziennej pracy programisty<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">W Pythonie funkcja <code>bin()<\/code> nale\u017cy do funkcji wbudowanych i s\u0142u\u017cy do zamiany liczby ca\u0142kowitej typu <code>int<\/code> na jej zapis binarny w postaci tekstowej. Wynikiem nie jest liczba, ale napis (<code>str<\/code>), kt\u00f3ry mo\u017cna dalej analizowa\u0107, por\u00f3wnywa\u0107 albo przetwarza\u0107.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To wa\u017cne, bo zapis binarny nie jest tu obiektem matematycznym, tylko reprezentacj\u0105 tekstow\u0105. Dzi\u0119ki temu mo\u017cna na przyk\u0142ad:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>policzy\u0107 liczb\u0119 jedynek,<\/li>\n\n\n\n<li>sprawdzi\u0107 konkretne bity,<\/li>\n\n\n\n<li>usun\u0105\u0107 prefiks <code>0b<\/code>,<\/li>\n\n\n\n<li>zapisa\u0107 wynik do pliku,<\/li>\n\n\n\n<li>wykorzysta\u0107 wynik w debugowaniu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Python zwraca wynik z prefiksem <code>0b<\/code>, kt\u00f3ry oznacza system binarny. Dla liczb ujemnych pojawia si\u0119 znak minus przed prefiksem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"najprostsze-przyklady-dzialania-funkcji\">Najprostsze przyk\u0142ady dzia\u0142ania funkcji<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Warto\u015b\u0107 wej\u015bciowa<\/th><th>Kod Python<\/th><th>Wynik<\/th><\/tr><\/thead><tbody><tr><td>5<\/td><td><code>bin(5)<\/code><\/td><td><code>'0b101'<\/code><\/td><\/tr><tr><td>10<\/td><td><code>bin(10)<\/code><\/td><td><code>'0b1010'<\/code><\/td><\/tr><tr><td>0<\/td><td><code>bin(0)<\/code><\/td><td><code>'0b0'<\/code><\/td><\/tr><tr><td>-7<\/td><td><code>bin(-7)<\/code><\/td><td><code>'-0b111'<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Warto zauwa\u017cy\u0107, \u017ce:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>5<\/code> w systemie dziesi\u0119tnym to <code>101<\/code> w binarnym,<\/li>\n\n\n\n<li><code>10<\/code> to <code>1010<\/code>,<\/li>\n\n\n\n<li><code>0<\/code> pozostaje <code>0<\/code>,<\/li>\n\n\n\n<li>liczby ujemne nie s\u0105 prezentowane jako pe\u0142ny zapis uzupe\u0142niony do dw\u00f3ch, tylko w prostszej formie tekstowej.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To cz\u0119sto zaskakuje osoby ucz\u0105ce si\u0119 niskopoziomowego programowania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bin-zwraca-binarna-reprezentacje-liczby-calkowitej-jako-string-i-pokazuje-rzeczywisty-zapis-bitowy-wartosci\">bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string i pokazuje rzeczywisty zapis bitowy warto\u015bci<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Zapis binarny wynika bezpo\u015brednio z podzia\u0142u liczby przez 2 i zapami\u0119tywania reszt. Ka\u017cdy bit oznacza pot\u0119g\u0119 dw\u00f3jki.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"matematyczna-interpretacja\">Matematyczna interpretacja<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Liczba dziesi\u0119tna<\/th><th>Rozk\u0142ad na pot\u0119gi dw\u00f3jki<\/th><th>Zapis binarny<\/th><\/tr><\/thead><tbody><tr><td>13<\/td><td>8 + 4 + 1<\/td><td>1101<\/td><\/tr><tr><td>19<\/td><td>16 + 2 + 1<\/td><td>10011<\/td><\/tr><tr><td>32<\/td><td>32<\/td><td>100000<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dla liczby <code>13<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Pozycja bitu<\/th><th>Warto\u015b\u0107<\/th><\/tr><\/thead><tbody><tr><td>2\u00b3<\/td><td>1<\/td><\/tr><tr><td>2\u00b2<\/td><td>1<\/td><\/tr><tr><td>2\u00b9<\/td><td>0<\/td><\/tr><tr><td>2\u2070<\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">czyli:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Wz\u00f3r<\/th><\/tr><\/thead><tbody><tr><td><code>13 = 1\u00b72\u00b3 + 1\u00b72\u00b2 + 0\u00b72\u00b9 + 1\u00b72\u2070<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Python wykonuje t\u0119 konwersj\u0119 automatycznie, ale zrozumienie mechanizmu jest istotne przy implementacji w\u0142asnych algorytm\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"reczna-implementacja-konwersji-w-pythonie\">R\u0119czna implementacja konwersji w Pythonie<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Kod<\/th><\/tr><\/thead><tbody><tr><td>&#8222;`python<\/td><\/tr><tr><td>def to_binary(n):<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\">if n == 0:<br>    return \"0\"result = \"\"while n &gt; 0:<br>    result = str(n % 2) + result<br>    n = n \/\/ 2return result<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">print(to_binary(13))<\/p>\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>Wynik<\/th><\/tr><\/thead><tbody><tr><td><code>1101<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To dok\u0142adnie ten sam mechanizm, kt\u00f3ry stoi za dzia\u0142aniem funkcji wbudowanej.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"odpowiednik-w-c\">Odpowiednik w C<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">| Kod |<br>|&#8212;|<br>| &#8222;`c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">void toBinary(int n) {<br>int tab[32];<br>int i = 0;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (n == 0) {\n    printf(\"0\\n\");\n    return;\n}\n\nwhile (n &gt; 0) {\n    tab&#91;i] = n % 2;\n    n = n \/ 2;\n    i++;\n}\n\nfor (int j = i - 1; j &gt;= 0; j--) {\n    printf(\"%d\", tab&#91;j]);\n}\n\nprintf(\"\\n\");<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">int main() {<br>toBinary(13);<br>return 0;<br>}<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>W C nie ma prostego odpowiednika `bin()`, wi\u0119c konwersj\u0119 zwykle pisze si\u0119 r\u0119cznie.\n\n---\n\n## Usuwanie prefiksu 0b i przygotowanie wyniku do dalszego przetwarzania\n\nW praktyce bardzo cz\u0119sto nie chcemy prefiksu `0b`, tylko sam ci\u0105g bit\u00f3w.\n\n### Najcz\u0119stsze metody\n\n| Kod | Wynik |\n|---|---|\n| `bin(10)` | `'0b1010'` |\n| `bin(10)&#91;2:]` | `'1010'` |\n| `format(10, 'b')` | `'1010'` |\n\nMetoda `format()` bywa wygodniejsza, szczeg\u00f3lnie gdy potrzebne jest wyr\u00f3wnanie d\u0142ugo\u015bci.\n\n### Uzupe\u0142nianie zerami\n\nPrzy pracy z bajtami i rejestrami cz\u0119sto potrzebna jest sta\u0142a d\u0142ugo\u015b\u0107.\n\n| Kod | Wynik |\n|---|---|\n| `format(5, '08b')` | `'00000101'` |\n| `format(255, '08b')` | `'11111111'` |\n| `format(3, '016b')` | `'0000000000000011'` |\n\nTo ma znaczenie np. przy:\n\n- analizie protoko\u0142\u00f3w sieciowych,\n- pracy z mikrokontrolerami,\n- szyfrowaniu,\n- maskach uprawnie\u0144 w systemach operacyjnych.\n\nBez wyr\u00f3wnania \u0142atwo pope\u0142ni\u0107 b\u0142\u0105d interpretacyjny.\n\n---\n\n## bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string przy liczbach ujemnych, zerze i du\u017cych warto\u015bciach\n\nTo miejsce, gdzie pocz\u0105tkuj\u0105cy najcz\u0119\u015bciej si\u0119 myl\u0105.\n\n### Liczba zero\n\n| Kod | Wynik |\n|---|---|\n| `bin(0)` | `'0b0'` |\n\nNie ma pustego stringa ani specjalnego przypadku poza pojedynczym zerem.\n\n### Liczby ujemne\n\n| Kod | Wynik |\n|---|---|\n| `bin(-5)` | `'-0b101'` |\n| `bin(-12)` | `'-0b1100'` |\n\nPython nie pokazuje tutaj reprezentacji U2 (two\u2019s complement), tylko znak minus i warto\u015b\u0107 bezwzgl\u0119dn\u0105.\n\nW systemach niskopoziomowych to za ma\u0142o, bo procesor przechowuje liczby inaczej.\n\n### Symulacja zapisu 8-bitowego U2\n\n| Kod |\n|---|\n| ```python\nn = -5\nprint(format(n &amp; 0xff, '08b'))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">|<\/p>\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>Wynik<\/th><\/tr><\/thead><tbody><tr><td><code>11111011<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To ju\u017c odpowiada rzeczywistemu zapisowi w pami\u0119ci dla typu 8-bitowego.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ten temat jest wa\u017cny przy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>embedded,<\/li>\n\n\n\n<li>analizie assemblera,<\/li>\n\n\n\n<li>bezpiecze\u0144stwie systemowym,<\/li>\n\n\n\n<li>debugowaniu b\u0142\u0119d\u00f3w przepe\u0142nienia.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bin-zwraca-binarna-reprezentacje-liczby-calkowitej-jako-string-w-praktyce-debugowania-i-analizy-algorytmow\">bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string w praktyce debugowania i analizy algorytm\u00f3w<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Funkcja wydaje si\u0119 prosta, ale realnie oszcz\u0119dza du\u017co czasu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"przyklad-z-maska-bitowa\">Przyk\u0142ad z mask\u0105 bitow\u0105<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Za\u0142\u00f3\u017cmy, \u017ce uprawnienia u\u017cytkownika zapisujemy jako liczby:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Uprawnienie<\/th><th>Bit<\/th><th>Warto\u015b\u0107<\/th><\/tr><\/thead><tbody><tr><td>odczyt<\/td><td>0<\/td><td>1<\/td><\/tr><tr><td>zapis<\/td><td>1<\/td><td>2<\/td><\/tr><tr><td>usuwanie<\/td><td>2<\/td><td>4<\/td><\/tr><tr><td>administracja<\/td><td>3<\/td><td>8<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dla warto\u015bci <code>13<\/code>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">| Kod |<br>|&#8212;|<br>| &#8222;`python<br>permissions = 13<br>print(bin(permissions))<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wynik:\n\n| Wynik |\n|---|\n| `0b1101` |\n\nInterpretacja:\n\n- administracja: tak\n- usuwanie: tak\n- zapis: nie\n- odczyt: tak\n\nBez zapisu binarnego analiza by\u0142aby znacznie mniej wygodna.\n\n### Sprawdzanie parzysto\u015bci i bit\u00f3w\n\n| Kod |\n|---|\n| ```python\nn = 18\n\nif n &amp; 1 == 0:\n    print(\"parzysta\")\n\nprint(bin(n))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">|<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Operator <code>&amp;<\/code> dzia\u0142a bezpo\u015brednio na bitach. <code>bin()<\/code> pozwala szybko zobaczy\u0107, dlaczego wynik jest taki, a nie inny.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To bardzo pomaga przy nauce operator\u00f3w bitowych.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"odpowiedniki-w-c-php-i-roznice-miedzy-jezykami\">Odpowiedniki w C++, PHP i r\u00f3\u017cnice mi\u0119dzy j\u0119zykami<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nie ka\u017cdy j\u0119zyk ma funkcj\u0119 identyczn\u0105 jak Python.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"c\">C++<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">| Kod |<br>|&#8212;|<br>| &#8222;`cpp<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">int main() {<br>int n = 10;<br>std::cout &lt;&lt; std::bitset&lt;8&gt;(n) &lt;&lt; std::endl;<br>return 0;<br>}<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Tutaj wynik ma z g\u00f3ry ustalon\u0105 d\u0142ugo\u015b\u0107, np. 8 bit\u00f3w.\n\n### PHP\n\n| Kod |\n|---|\n| ```php\n&lt;?php\necho decbin(10);\n?&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">|<\/p>\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>Wynik<\/th><\/tr><\/thead><tbody><tr><td><code>1010<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">PHP u\u017cywa funkcji <code>decbin()<\/code>, a nie <code>bin()<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To wa\u017cne przy pracy mi\u0119dzy j\u0119zykami, bo nazwy bywaj\u0105 myl\u0105ce.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"najczestsze-bledy-i-praktyczne-pulapki\">Najcz\u0119stsze b\u0142\u0119dy i praktyczne pu\u0142apki<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"traktowanie-wyniku-jako-liczby\">Traktowanie wyniku jako liczby<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To b\u0142\u0105d bardzo cz\u0119sty.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>B\u0142\u0119dne za\u0142o\u017cenie<\/th><th>Rzeczywisto\u015b\u0107<\/th><\/tr><\/thead><tbody><tr><td><code>bin(5)<\/code> zwraca liczb\u0119<\/td><td>zwraca string<\/td><\/tr><tr><td>mo\u017cna dodawa\u0107 matematycznie<\/td><td>trzeba najpierw konwertowa\u0107<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"zapominanie-o-prefiksie-0-b\">Zapominanie o prefiksie <code>0b<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Przy por\u00f3wnaniach tekstowych daje to b\u0142\u0119dne wyniki.<\/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><code>bin(8) == \"1000\"<\/code><\/td><td><code>False<\/code><\/td><\/tr><tr><td><code>bin(8)[2:] == \"1000\"<\/code><\/td><td><code>True<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"niezrozumienie-liczb-ujemnych\">Niezrozumienie liczb ujemnych<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Programista oczekuje U2, a dostaje zapis tekstowy ze znakiem minus. To potrafi zepsu\u0107 analiz\u0119 b\u0142\u0119d\u00f3w na wiele godzin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czy-bin-dziala-dla-liczb-zmiennoprzecinkowych\">Czy <code>bin()<\/code> dzia\u0142a dla liczb zmiennoprzecinkowych?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nie. Funkcja przyjmuje liczby ca\u0142kowite (<code>int<\/code>). Dla <code>float<\/code> pojawi si\u0119 b\u0142\u0105d <code>TypeError<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czy-mozna-odwrocic-dzialanie-bin\">Czy mo\u017cna odwr\u00f3ci\u0107 dzia\u0142anie <code>bin()<\/code>?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tak.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">| Kod |<br>|&#8212;|<br>| <code>python x = \"1010\" print(int(x, 2))<\/code> |<\/p>\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>Wynik<\/th><\/tr><\/thead><tbody><tr><td><code>10<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czy-format-jest-lepsze-niz-bin\">Czy <code>format()<\/code> jest lepsze ni\u017c <code>bin()<\/code>?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zale\u017cy od celu.<br><code>bin()<\/code> jest szybsze do prostego podgl\u0105du warto\u015bci.<br><code>format()<\/code> jest wygodniejsze przy ustalonej d\u0142ugo\u015bci bit\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czy-bin-dziala-dla-bardzo-duzych-liczb\">Czy <code>bin()<\/code> dzia\u0142a dla bardzo du\u017cych liczb?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tak. Python obs\u0142uguje liczby ca\u0142kowite o dowolnej wielko\u015bci ograniczonej pami\u0119ci\u0105 operacyjn\u0105.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"czy-wynik-mozna-wykorzystac-w-algorytmach\">Czy wynik mo\u017cna wykorzysta\u0107 w algorytmach?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tak, szczeg\u00f3lnie przy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DP na maskach bitowych,<\/li>\n\n\n\n<li>BFS po stanach,<\/li>\n\n\n\n<li>kryptografii,<\/li>\n\n\n\n<li>kompresji danych,<\/li>\n\n\n\n<li>analizie flag i rejestr\u00f3w.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To nie jest tylko funkcja edukacyjna &#8211; w praktyce bywa naprawd\u0119 u\u017cyteczna.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Funkcja jest prosta, ale dobrze pokazuje r\u00f3\u017cnic\u0119 mi\u0119dzy warto\u015bci\u0105 liczby a jej reprezentacj\u0105. To rozr\u00f3\u017cnienie wraca p\u00f3\u017aniej wsz\u0119dzie: w algorytmach, pami\u0119ci operacyjnej, systemach plik\u00f3w, sieciach i bezpiecze\u0144stwie. Kto dobrze rozumie zapis binarny, zwykle szybciej rozumie te\u017c b\u0142\u0119dy, kt\u00f3re na pierwszy rzut oka wygl\u0105daj\u0105 zupe\u0142nie nielogicznie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u0179r\u00f3d\u0142o Foto: Freepik<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Systemy komputerowe operuj\u0105 na bitach, ale cz\u0142owiek najcz\u0119\u015bciej my\u015bli w systemie dziesi\u0119tnym. W\u0142a\u015bnie dlatego konwersja liczb mi\u0119dzy r\u00f3\u017cnymi systemami zapisu jest jedn\u0105 z podstaw pracy z programowaniem, algorytmami i analiz\u0105 dzia\u0142ania pami\u0119ci. Szczeg\u00f3lnie cz\u0119sto pojawia si\u0119 potrzeba szybkiego sprawdzenia, jak dana warto\u015b\u0107 wygl\u0105da na poziomie bit\u00f3w, na przyk\u0142ad podczas pracy z maskami bitowymi, flagami lub operacjami przesuni\u0119\u0107. W praktyce codziennej pracy z liczbami ca\u0142kowitymi bardzo cz\u0119sto pojawia si\u0119 operacja bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string. Podstawy dzia\u0142ania funkcji i znaczenie zapisu binarnego w codziennej pracy programisty W Pythonie funkcja bin() nale\u017cy do funkcji wbudowanych i s\u0142u\u017cy do zamiany liczby ca\u0142kowitej typu int na jej zapis binarny w postaci tekstowej. Wynikiem nie jest liczba, ale napis (str), kt\u00f3ry mo\u017cna dalej analizowa\u0107, por\u00f3wnywa\u0107 albo przetwarza\u0107. To wa\u017cne, bo zapis binarny nie jest tu obiektem matematycznym, tylko reprezentacj\u0105 tekstow\u0105. Dzi\u0119ki temu mo\u017cna na przyk\u0142ad: Python zwraca wynik z prefiksem 0b, kt\u00f3ry oznacza system binarny. Dla liczb ujemnych pojawia si\u0119 znak minus przed prefiksem. Najprostsze przyk\u0142ady dzia\u0142ania funkcji Warto\u015b\u0107 wej\u015bciowa Kod Python Wynik 5 bin(5) '0b101&#8242; 10 bin(10) '0b1010&#8242; 0 bin(0) '0b0&#8242; -7 bin(-7) &#8217;-0b111&#8242; Warto zauwa\u017cy\u0107, \u017ce: To cz\u0119sto zaskakuje osoby ucz\u0105ce si\u0119 niskopoziomowego programowania. bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string i pokazuje rzeczywisty zapis bitowy warto\u015bci Zapis binarny wynika bezpo\u015brednio z podzia\u0142u liczby przez 2 i zapami\u0119tywania reszt. Ka\u017cdy bit oznacza pot\u0119g\u0119 dw\u00f3jki. Matematyczna interpretacja Liczba dziesi\u0119tna Rozk\u0142ad na pot\u0119gi dw\u00f3jki Zapis binarny 13 8 + 4 + 1 1101 19 16 + 2 + 1 10011 32 32 100000 Dla liczby 13: Pozycja bitu Warto\u015b\u0107 2\u00b3 1 2\u00b2 1 2\u00b9 0 2\u2070 1 czyli: Wz\u00f3r 13 = 1\u00b72\u00b3 + 1\u00b72\u00b2 + 0\u00b72\u00b9 + 1\u00b72\u2070 Python wykonuje t\u0119 konwersj\u0119 automatycznie, ale zrozumienie mechanizmu jest istotne przy implementacji w\u0142asnych algorytm\u00f3w. R\u0119czna implementacja konwersji w Pythonie Kod &#8222;`python def to_binary(n): if n == 0: return &#8222;0&#8221;result = &#8222;&#8221;while n &gt; 0: result = str(n % 2) + result n = n \/\/ 2return result print(to_binary(13)) Wynik: Wynik 1101 To dok\u0142adnie ten sam mechanizm, kt\u00f3ry stoi za dzia\u0142aniem funkcji wbudowanej. Odpowiednik w C | Kod ||&#8212;|| &#8222;`c void toBinary(int n) {int tab[32];int i = 0; } int main() {toBinary(13);return 0;} | Wynik: Wynik 11111011 To ju\u017c odpowiada rzeczywistemu zapisowi w pami\u0119ci dla typu 8-bitowego. Ten temat jest wa\u017cny przy: bin \u2013 zwraca binarn\u0105 reprezentacj\u0119 liczby ca\u0142kowitej jako string w praktyce debugowania i analizy algorytm\u00f3w Funkcja wydaje si\u0119 prosta, ale realnie oszcz\u0119dza du\u017co czasu. Przyk\u0142ad z mask\u0105 bitow\u0105 Za\u0142\u00f3\u017cmy, \u017ce uprawnienia u\u017cytkownika zapisujemy jako liczby: Uprawnienie Bit Warto\u015b\u0107 odczyt 0 1 zapis 1 2 usuwanie 2 4 administracja 3 8 Dla warto\u015bci 13: | Kod ||&#8212;|| &#8222;`pythonpermissions = 13print(bin(permissions)) | Operator &amp; dzia\u0142a bezpo\u015brednio na bitach. bin() pozwala szybko zobaczy\u0107, dlaczego wynik jest taki, a nie inny. To bardzo pomaga przy nauce operator\u00f3w bitowych. Odpowiedniki w C++, PHP i r\u00f3\u017cnice mi\u0119dzy j\u0119zykami Nie ka\u017cdy j\u0119zyk ma funkcj\u0119 identyczn\u0105 jak Python. C++ | Kod ||&#8212;|| &#8222;`cpp int main() {int n = 10;std::cout &lt;&lt; std::bitset&lt;8&gt;(n) &lt;&lt; std::endl;return 0;} | Wynik: Wynik 1010 PHP u\u017cywa funkcji decbin(), a nie bin(). To wa\u017cne przy pracy mi\u0119dzy j\u0119zykami, bo nazwy bywaj\u0105 myl\u0105ce. Najcz\u0119stsze b\u0142\u0119dy i praktyczne pu\u0142apki Traktowanie wyniku jako liczby To b\u0142\u0105d bardzo cz\u0119sty. B\u0142\u0119dne za\u0142o\u017cenie Rzeczywisto\u015b\u0107 bin(5) zwraca liczb\u0119 zwraca string mo\u017cna dodawa\u0107 matematycznie trzeba najpierw konwertowa\u0107 Zapominanie o prefiksie 0b Przy por\u00f3wnaniach tekstowych daje to b\u0142\u0119dne wyniki. Kod Problem bin(8) == &#8222;1000&#8221; False bin(8)[2:] == &#8222;1000&#8221; True Niezrozumienie liczb ujemnych Programista oczekuje U2, a dostaje zapis tekstowy ze znakiem minus. To potrafi zepsu\u0107 analiz\u0119 b\u0142\u0119d\u00f3w na wiele godzin. FAQ Czy bin() dzia\u0142a dla liczb zmiennoprzecinkowych? Nie. Funkcja przyjmuje liczby ca\u0142kowite (int). Dla float pojawi si\u0119 b\u0142\u0105d TypeError. Czy mo\u017cna odwr\u00f3ci\u0107 dzia\u0142anie bin()? Tak. | Kod ||&#8212;|| python x = &#8222;1010&#8221; print(int(x, 2)) | Wynik: Wynik 10 Czy format() jest lepsze ni\u017c bin()? Zale\u017cy od celu.bin() jest szybsze do prostego podgl\u0105du warto\u015bci.format() jest wygodniejsze przy ustalonej d\u0142ugo\u015bci bit\u00f3w. Czy bin() dzia\u0142a dla bardzo du\u017cych liczb? Tak. Python obs\u0142uguje liczby ca\u0142kowite o dowolnej wielko\u015bci ograniczonej pami\u0119ci\u0105 operacyjn\u0105. Czy wynik mo\u017cna wykorzysta\u0107 w algorytmach? Tak, szczeg\u00f3lnie przy: To nie jest tylko funkcja edukacyjna &#8211; w praktyce bywa naprawd\u0119 u\u017cyteczna. Funkcja jest prosta, ale dobrze pokazuje r\u00f3\u017cnic\u0119 mi\u0119dzy warto\u015bci\u0105 liczby a jej reprezentacj\u0105. To rozr\u00f3\u017cnienie wraca p\u00f3\u017aniej wsz\u0119dzie: w algorytmach, pami\u0119ci operacyjnej, systemach plik\u00f3w, sieciach i bezpiecze\u0144stwie. Kto dobrze rozumie zapis binarny, zwykle szybciej rozumie te\u017c b\u0142\u0119dy, kt\u00f3re na pierwszy rzut oka wygl\u0105daj\u0105 zupe\u0142nie nielogicznie. \u0179r\u00f3d\u0142o Foto: Freepik<\/p>\n","protected":false},"author":1,"featured_media":1417,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-1416","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kodowanie"],"_links":{"self":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1416","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=1416"}],"version-history":[{"count":1,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1416\/revisions"}],"predecessor-version":[{"id":1418,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1416\/revisions\/1418"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media\/1417"}],"wp:attachment":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/categories?post=1416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/tags?post=1416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}