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

zapis liczb na bitach

Object Storage Arubacloud
0 głosów
475 wizyt
pytanie zadane 13 czerwca 2018 w C i C++ przez WhizzKid Początkujący (400 p.)

Witam,

podobno w takim przypadku:

struct moja {
   unsigned int a1:4, /* 4 bity */
 };

maksymalną liczbą dla moja.a1 jest 7.

Tu moje pytanie skoro 4 bity, no to największą możliwą liczbą do zapisania było by 15...
-> 2^0+2^1+2^2+2^3= 15

czy może kwestia leży w tym że 1 bit z tych 4 ma zapisane w sobie [\0]...???

1 odpowiedź

0 głosów
odpowiedź 13 czerwca 2018 przez k222 Nałogowiec (30,150 p.)
wybrane 13 czerwca 2018 przez WhizzKid
 
Najlepsza

podobno w takim przypadku:

to może sprawdzimy???

 

#include <iostream>
#include <string>

using namespace std;

struct moja {
   unsigned int a:4; 
 };
 
int main()
{
  moja x;
  x.a = 15;
  cout<<x.a<<endl;
  x.a = 16;
  cout<<x.a<<endl;
}

u mnie ten program działa poprawnie dla 15 a wali się dla 16 (możesz powpisywać inne wartości), co jest znakiem że 15 jest maksymalną liczbą jaką można tam wpisać. To, z czym ci się mogło pomylić to fakt, że w przypadku int jeden bit idzie na znak, ale tu mamy unsigned int czyli znak nie jest przechowywany. Tak nawiasem mówiąc zauważ, że ten program dla liczb z przedziału [0;15] działa dobrze, a dla większych liczb dzieje się ciekawa rzecz, mianowicie mamy:
dla 16 wypisuje 0 (=16 - 16)
dla 19 wypisuje 3 (= 19 - 16)
...
bo rzeczywiście zmienna a przechowuje 4 bity, ale jak do niej wpiszesz coś większego to nie będzie tam błędu, będzie tylko ostrzeżenie, ponieważ reszta bitów w przypadku większej liczby nie zostanie po prostu zapisana (czyli dla 19 (10) = 10011 (2) zostanie zapisany tylko kawałek 0011 (2) = 3 (10)). Jak chcesz to sam możesz sprawdzić co dzieje się dla liczb większych od 7 gdy mamy int a nie unsigned int)

Podobne pytania

0 głosów
2 odpowiedzi 497 wizyt
pytanie zadane 27 grudnia 2016 w Matematyka, fizyka, logika przez qlucha Obywatel (1,790 p.)
0 głosów
2 odpowiedzi 223 wizyt
pytanie zadane 20 maja 2016 w C i C++ przez Munvik Dyskutant (9,350 p.)
0 głosów
1 odpowiedź 6,139 wizyt

92,696 zapytań

141,608 odpowiedzi

320,112 komentarzy

62,055 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

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!

...