Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

Co to jest przepełnienie całkowite?

Okładka posta: Co to jest przepełnienie całkowite?
Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
Masz licznik, który może liczyć tylko do pewnej liczby. Na przykład, kieszonkowy kalkulator, który pokazuje maksymalnie 999. Jeśli spróbujesz dodać 1 do 999, nie będzie w stanie pokazać 1000 - cyfry po prostu "przepełnią się" (overflow) i kalkulator pokaże coś zupełnie innego, na przykład 000.
W programowaniu taki efekt nazywa się integer overflow (przepełnienie liczby całkowitej).
Dzieje się tak, gdy liczba staje się większa od maksymalnej wartości, którą może przechować wybrany typ zmiennej.
Na przykład, jeśli zmienna int może przechowywać liczby do 2,147,483,647, to dodanie 1 sprawi, że jej wartość… stanie się negatywna!

Dlaczego 2,147,483,647 to "sufit" dla 32-bitowej liczby

W komputerze liczby przechowywane są w postaci binarnej (czyli jako sekwencja zer i jedynek).
"32-bitowy" oznacza, że do przechowywania liczby przydzielono 32 komórki, a w każdej może być albo 0, albo 1.
Jednak jeśli liczba jest signed (ze znakiem), to jedna z tych komórek jest zarezerwowana dla znaku:
  • 0 w pierwszym bicie — liczba dodatnia,
  • 1 w pierwszym bicie — liczba ujemna.
To znaczy, że zamiast 32 bitów dla wartości liczby pozostaje tylko 31 bit.
Maksymalna wartość
Gdy wszystkie 31 bitów (oprócz znaku) jest wypełnionych jedynkami, otrzymujemy największą możliwą dodatnią liczbę:
1111111111111111111111111111111 (31 jedynka)
W systemie dziesiętnym to dokładnie 2,147,483,647.
W formie szesnastkowej (hex) zapisuje się to jako 0x7FFFFFFF:
  • 7 — to binarnie 0111 (czyli znak 0 + trzy jedynki),
  • F — to binarnie 1111 (cztery jedynki),
  • i tak dalej do końca.
Dlatego w programach czasami występują bardzo dziwne błędy, a w historii zdarzały się nawet poważne awarie z powodu przepełnienia. Zdarzają się nawet memy z powodu błędu integer overflow, ale to nie jest pewne.

Ten post nie ma jeszcze żadnych dodatków od autora.

Czym jest format HEIC i dlaczego proste zmienienie jego nazwy na .jpg to zły pomysł
15 cze '25 18:17

Czym jest format HEIC i dlaczego proste zmienienie jego nazwy na .jpg to zły pomysł

Dlaczego wybór CMS jest ważny podczas tworzenia strony internetowej?
29 cze '25 12:34

Dlaczego wybór CMS jest ważny podczas tworzenia strony internetowej?

Błąd 403 na stronie: co to oznacza i jak go naprawić
24 lip '25 23:50

Błąd 403 na stronie: co to oznacza i jak go naprawić

Co to jest vibe coding?
25 lip '25 21:51

Co to jest vibe coding?

Czym jest eksplozja kombinatoryczna?
28 lip '25 11:50

Czym jest eksplozja kombinatoryczna?

Co to jest stos mózgowy (brain stack)?
28 lip '25 19:37

Co to jest stos mózgowy (brain stack)?

Co to jest plik HAR (HTTP Archive)?
25 sie '25 18:23

Co to jest plik HAR (HTTP Archive)?

Czym jest Bubble Sort (wyjaśnienie algorytmu)?
16 wrz '25 18:42

Czym jest Bubble Sort (wyjaśnienie algorytmu)?

Czym jest wzrost eksponencjalny?
16 wrz '25 18:57

Czym jest wzrost eksponencjalny?

Czym jest złożoność faktorialna?
16 wrz '25 19:03

Czym jest złożoność faktorialna?

Czym jest NP-trudność?
16 wrz '25 19:31

Czym jest NP-trudność?

Offset vs Cursor Pagination w Rails: co wybrać i dlaczego
24 wrz '25 15:22

Offset vs Cursor Pagination w Rails: co wybrać i dlaczego