• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przekroczenie max wartości zmiennej - wynik

Object Storage Arubacloud
0 głosów
1,265 wizyt
pytanie zadane 28 listopada 2015 w C i C++ przez Grzyboo Nałogowiec (28,860 p.)

Zawsze myślałem, że inaczej oblicza się liczbę przy przekroczeniu maksymalnej wartości. Jednak wynik programu mnie trochę zaskoczył. Jak takie coś przeliczyć?

char ch = 720;
cout << (int)ch << endl

Wynikiem będzie -48, co nie pokrywa się z moimi obliczeniami. Jak dojść do tego, wiedząc że char przyjmuje wartości -128 do 127?

1 odpowiedź

+5 głosów
odpowiedź 28 listopada 2015 przez Krawiec91 Pasjonat (19,600 p.)
wybrane 28 listopada 2015 przez Grzyboo
 
Najlepsza

Nic nadzwyczajnego tu się nie dzieje.
Liczba 720 to binarnie 10 1101 0000, czyli potrzeba 10 bitów (jeśli typ unsigned) albo 11 bitów, jeżeli ma to liczba ze znakiem. Próbujesz zapisać tę liczbę do zmiennej całkowitej o rozmiarze 8 - bitów (zmienna char). Z tych 10 bitów do zmiennej zostanie zapisane jedynie 8 młodszych bitów tej liczby (pogrubione). Przeliczając z binarnego U2 na system dziesiętny otrzymujemy: -2^7 + 2^6 + 2^4 = -128 + 64 + 16 = -48. Zmienna char została użyta bez modyfikatora unsigned, więc najstarszy bit jest bitem znaku, stąd to -2^7.

komentarz 28 listopada 2015 przez Grzyboo Nałogowiec (28,860 p.)
Super, dzięki

Podobne pytania

+1 głos
1 odpowiedź 478 wizyt
+1 głos
1 odpowiedź 125 wizyt
0 głosów
2 odpowiedzi 3,103 wizyt
pytanie zadane 21 kwietnia 2017 w C i C++ przez Jedyn Obywatel (1,200 p.)

92,535 zapytań

141,376 odpowiedzi

319,449 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...