Unia, struktury, pola bitowe - jak to dzieli

0

Witam!
Nie rozumiem trochę jak to dzieli dane, jeśli mógłby ktoś to wytlumaczyć to bardzo proszę. Mam coś takiego:


using namespace std;
struct pole{
unsigned int x1 : 16;
unsigned int x2 : 16;

};
union pola_bitowe{
    unsigned int cale; 
    pole dana;
};
int main()
{   pola_bitowe X;
    X.cale = 1000000;
    cout<<X.dana.x1<<endl<<X.dana.x2;
    return 0;   
} 

otrzymuję wyniki:
x1 = 16960
x2 = 15,
Jak to podzielilo, że jest taki wynik, bo rozumiem, że mogę używać pol bitowych i uni do jakiegos podzialu.

1

1000000 = 11110100001001000000b
16960 = 100001001000000b
15 = 1111b
jak skleisz ze sobą te dwie binarne liczby to masz:
1111100001001000000
czyli to czego się spodziewałeś.

0

aaaaa no tak, bo tak to zapisane jest w pamieci komputera..juz rozumiem :)

1

http://ideone.com/pQL1we
output:

 n = 0000 0000 0000 1111  0100 0010 0100 0000b = 1000000
x1 = 0000 0000 0000 0000  0000 0000 0000 1111b = 15
x2 = 0000 0000 0000 0000  0100 0010 0100 0000b = 16960

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0