Witam.
Rozmawialiśmy na zajęciach o 16 bit'owym incie i tu moje pytanie czy coś takiego jest trudne do ogarnięcia? Jeśli macie jakieś pomysły to podzielcie się nimi ze mną :)
Co ma być "trudne do ogarnięcia"?
Zakładając, że rozumiesz jak działają 32-bitowe int-y, nie powinieneś mieć problemu ze zrozumieniem zasady działania nawet 3-bitowych ;P
16 bitowy int to inaczej "short". Chyba że chodzi ci o to ,że jak kompilujemy program na jakąś inną architekturę to rozmiar zwykłego "int" jest zmienny aby zapewnić przenośność programów definiuje się inne nazwy za pomoca typedefa(coś w rodzaju int_32 itp) dzięki temu jak będziemy kompilować program na inną architekturę wystarczy zmienić instrukcję typedef a nie wszystkie miejsca programu gdzie wystąpiła zmienna int.
aby zapewnić przenośność programów definiuje się inne nazwy za pomoca typedefa(coś w rodzaju int_32 itp) dzięki temu jak będziemy kompilować program na inną architekturę wystarczy zmienić instrukcję typedef a nie wszystkie miejsca programu gdzie wystąpiła zmienna int.
Generalnie nie trzeba robić tego samemu, jest od tego nagłówek <stdint.h>
/ <cstdint>
. Choć domyślnie nie wszędzie (w C od C99, a w C++ od 0x).
Chyba nie do końca wiem co mam zrobić. Dochodzę do wniosku, że jestem jakiś wycofany intelektualnie :|
No my za bardzo nie wiemy jaki jest twój problem.
Chce zrobić INT 16 bit. Bo normalny int ma 32 bit. I nie chce short int tylko po prostu INT 16. Teraz jasno zdefiniowałem swoją potrzebę, bynajmniej tak mi się wydaje.
Etho napisał(a):
Bo normalny int ma 32 bit.
Nieprawda.
http://www.cplusplus.com/doc/tutorial/variables/
Etho napisał(a):
I nie chce short int tylko po prostu INT 16.
Czyli, że nie chcesz short int
, ale chcesz short int
?
Ponieważ na 32-bitowych komputerach, short int
to właśnie jest ten 16-bitowy integer.
A najlepiej zainteresuj się jednak nagłówkiem stdint.h
(dla C)/cstdint
(dla C++); masz tam tę deklarację: int16_t
.
Ogólnie deklaracje w nagłówku cstdint
oraz jego C-owym odpowiedniku są zarządzane przez kompilator, więc masz pewność, że to int16_t
niezależnie od systemu i architektury, zawsze będzie 16-bitowym int-em.