Unia, struktury, pola bitowe - jak to dzieli

Unia, struktury, pola bitowe - jak to dzieli
AN
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 10 lat
  • Postów:78
0

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

Kopiuj
 
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.

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
AN
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 10 lat
  • Postów:78
0

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

KR
  • Rejestracja:prawie 16 lat
  • Ostatnio:6 miesięcy
  • Postów:2514
1

http://ideone.com/pQL1we
output:

Kopiuj
 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

░█░█░█░█░█░█░█░█░█░█░█░
edytowany 1x, ostatnio: krwq

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.