Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dlaczego bajt ma akurat 8 bitow ???????

1,516 views
Skip to first unread message

Gawelek

unread,
Mar 19, 2003, 2:08:43 PM3/19/03
to

Gawel


Marcin Tworek

unread,
Mar 19, 2003, 2:54:24 PM3/19/03
to
A gdzie tresc pytania ????
Pozdr,
Marcin Tworek


"Paweł_'Dziku'_Spychalski"___<dzikuNOSPAM@dzikie.net>

unread,
Mar 19, 2003, 2:58:20 PM3/19/03
to
Bo tak i już.... Ktoś miał akurat procesor ośmio bitowy, chciał jakoś
nazwać całe słowo i wymyślił bajt. Koniec histori

--
Paweł Spychalski aka Dziku
<< http://www.dzikie.net/ - dz...@dzikie.net - GG #1143854 >>
<< "Nie kradnij, rząd nie lubi konkurencji" >>

Jozef

unread,
Mar 19, 2003, 3:45:50 PM3/19/03
to
> Bo tak i już.... Ktoś miał akurat procesor ośmio bitowy, chciał
jakoś
> nazwać całe słowo i wymyślił bajt. Koniec histori
>
>
EMC ODRA 3025 miała słowo 24 bitowe......
Józef


TJD

unread,
Mar 19, 2003, 4:07:22 PM3/19/03
to
A dlaczego kilometr ma 1000 metrów?

TJD


Marcin Tworek

unread,
Mar 19, 2003, 4:12:38 PM3/19/03
to

No i co z tego ?
A pentium ma 32 bitowe a itanium 64 bitowe
a nowe GPU 128 lub 512 bitowe.
Bajt ma akurat 8 bitow bo na tylu bitach da sie zakodowac
256 roznych znakow np ASCII.
Pozdr,
Marcin Tworek


Slaw A

unread,
Mar 19, 2003, 4:33:05 PM3/19/03
to
Gawelek <gaw...@NOSPAMEKpoczta.gazeta.pl> napisał(a):

>
> Gawel
>
>
Powiem jedno panowie jak macie tak odpisywac to sie lepiej w ogole nie
odzywajcie.
Bajt sklada sie z 8 bitow ale tylko 7 jest wykorzystanych 8-y to bit
parzystosci.
Pozdrawiam.

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Marcin Tworek

unread,
Mar 19, 2003, 4:49:27 PM3/19/03
to
> Powiem jedno panowie jak macie tak odpisywac to sie
> lepiej w ogole nie odzywajcie. Bajt sklada sie z
> 8 bitow ale tylko 7 jest wykorzystanych 8-y to bit
> parzystosci.

Stuknij sie 3 razy w glowe zanim znowu napiszesz taka bzdure.
Pozdr,
Marcin Tworek


promek

unread,
Mar 19, 2003, 4:48:31 PM3/19/03
to
jest tak jak napisał marcin , 8bitów to 256 kombinacji tzn. możliwych do
zapisania znaków tyle znaków przewidziano dawno,dawno temu w odległej
galaktyce......
--
Wyslano z forum elektronicznego: http://www.elektroda.pl/rtvforum

Zielok

unread,
Mar 19, 2003, 4:52:11 PM3/19/03
to
Slaw A wrote:
> Bajt sklada sie z 8 bitow ale tylko 7 jest wykorzystanych 8-y to bit
> parzystosci.

Ze co????

--
Zielok
www.3dglare.prv.pl

Flash

unread,
Mar 19, 2003, 4:53:02 PM3/19/03
to
"Slaw A" <ma...@NOSPAM.gazeta.pl> wrote in
news:b5anmh$5jq$1...@inews.gazeta.pl:

> Bajt sklada sie z 8 bitow ale tylko 7 jest wykorzystanych 8-y to bit
> parzystosci.
> Pozdrawiam.
>

Poza tym wszyscy zdrowi ?

F.

Martti

unread,
Mar 19, 2003, 6:36:13 PM3/19/03
to

Użytkownik "Marcin Tworek" <use...@212.160.21.191> napisał w wiadomości
news:b5amgn$anp$1...@atlantis.news.tpi.pl...

czesc,
moim skromnym zdaniem, nie jest to zadnym powodem
podobnie jak z kazda jednostka, trzeba ja bylo pomnozyc
lub podzielic.Ktos mial fantazje i tak sobie to wymyslil.
To kwestia umowy, podobnie jak metr,gram,stopien celsjusza
kelwina, farenheita,

pozdrawiam
martti

Elektriko

unread,
Mar 19, 2003, 6:54:43 PM3/19/03
to

"promek" <rom...@interia.BEZSPAM.pl> wrote in message
news:b5aojd$qb5$1...@aquarius.webcorp.pl...

A dla przykładu IBM wymiślił sobie kiedyś, że bajtem będzie nazywał 9
bitów...
BTW Nie mylcie "słowa" z "bajtem" bo w większości przypadków to co innego.

Elektriko


Marcin Tworek

unread,
Mar 19, 2003, 7:43:35 PM3/19/03
to
> > Bajt ma akurat 8 bitow bo na tylu bitach da sie zakodowac
> > 256 roznych znakow np ASCII.

> moim skromnym zdaniem, nie jest to zadnym powodem


> podobnie jak z kazda jednostka, trzeba ja bylo pomnozyc
> lub podzielic.Ktos mial fantazje i tak sobie to wymyslil.
> To kwestia umowy, podobnie jak metr,gram,stopien celsjusza
> kelwina, farenheita,

Nie zupelnie. Pewne ograniczenia sa narzucone z gory.
Oczywiscie nie sa to super sztywne ograniczenia, ale nie stosowanie
sie do nich byloby maksymalnym utrudnianiem sobie zycia.
Jako ze w kompach stosujemy system binarny to bajt musi
byc jakas potego liczby 2. Czyli mamy 2^3=8, co daje nam
mozliwosc zakodowania 256 znakow. Gdyby za bajt uznac
2^2=4 daje mozliwosc zakodowania 16 znakow, czyli duzo
za malo, Gdyby to bylo 2^4=16, to daje to mozliwosc zakodowania
65536 znakow, czyli o wiele za duzo. Wiec 8 bitow jako
jeden bajt jest najbardziej optymalne.
Pozdr,
Marcin Tworek


Molibden

unread,
Mar 19, 2003, 7:51:18 PM3/19/03
to

Użytkownik "Elektriko" <te...@adresu.nie.ma> napisał w wiadomości
news:b5avqj$qod$1...@news.onet.pl...

>
> "promek" <rom...@interia.BEZSPAM.pl> wrote in message
> news:b5aojd$qb5$1...@aquarius.webcorp.pl...
> > jest tak jak napisał marcin , 8bitów to 256 kombinacji tzn. możliwych do
> > zapisania znaków tyle znaków przewidziano dawno,dawno temu w odległej
> > galaktyce......
> > --
> > Wyslano z forum elektronicznego: http://www.elektroda.pl/rtvforum
> >
>
> A dla przykładu IBM wymiślił sobie kiedyś, że bajtem będzie nazywał 9
> bitów...

A o rachunkach w systemach dwójkowych, ósemkowych i szesnastkowych
słyszeli "cuś"?


BartekK

unread,
Mar 19, 2003, 8:42:44 PM3/19/03
to
oczywiscie domyslam sie ze nie chodzi tu akurat o nazwe bajt tylko jakotaka
jednostke informacji stosowana w cyfrowce...

nie podpierajac sie jakas konkretna literatura historyczna podam swoja
interpetacje

w zamiezchlych czasach, gdy jeszcze nie bylo uP ani kompow do wyswietlania
uzywano wyswietlaczy numerycznych (pomijam juz lampy sterowane kodem 1z10)
do ktorych latwiej bylo sterowac wedlug kodu binarnego lub BCD (jako ze
system dziesietny to dla nas, a dla obliczen na paru TTL bramkach to tylko
2kowy jest sluszny).
jedna cyferka to 0-9 (lub 0-F jak szestnastkowo) czyli 16 kombinacji, i do
tego potrzeba bylo 4 bitow...
potem okazalo sie ze 2x4bity to mozna zapisac 0-99 dziesietnie, albo 0-FF
(0-255) szesnastkowo i to wystarcza do obliczen "cyfrowych" bez nadmiernej
komplikacji prostych ukladow (na poczatku TTL), a wynikalo to znow z ilosci
"komend" asemblera uwczesnych systemow, ktora dopiero w czasach
Atari/comodore chyba przekorczyla 300 rozkazow (ale tak naprawde to z
roznymi parametrami, wiec bylo ich mniej i na 8 bitach dalo sie wszystkie
upchnac, nastepne 8 bitow to byl parametr ew nastepny parametr)


a wcale nie jest tak ze bajt ma 8 bitow amen
sa kontrolery (mikrokontrolery? sterowniki? procki zintegrowane z wszystkim
co trzeba?) przemyslowe 4-bitowe, i wcale nie dzialaja z pol-bajtu tylko
taka precyzja im wystarcza - bo wiekszosc operacji robia "wlacz wylacz" - a
nie licza pierwiastka z dwoch....

ehh ide spac, bo juz bzdury gadam...

--
Bartlomiej Kuzniewski
si...@terror.org.pl http://terror.org.pl/~sibi/
tel 0-604-246371 GG#23319

Elektriko

unread,
Mar 19, 2003, 8:50:14 PM3/19/03
to

"Molibden" <kra...@poczta.onet.pl> wrote in message
news:b5b3bh$2ls$1...@news.onet.pl...
A jak mają się rachunki w systemach dwójkowych, ósemkowych i szesnastkowych
do bajta ?? Nie kumam Twojego toku rozumowania. Skłaniał bym się ku teori,
że ma to coś wspólnego z długościa "słowa" w maszynach liczących zwanych
komputerami.

Elektriko


Marcin Lewandowski

unread,
Mar 19, 2003, 8:59:31 PM3/19/03
to
Marcin Tworek wrote:
> Gdyby to bylo 2^4=16, to daje to mozliwosc zakodowania
> 65536 znakow, czyli o wiele za duzo.

A unicode to pies?

--
Marcin Lewandowski < m_l małpa op dot pl >

Artur Gawryszczak

unread,
Mar 19, 2003, 10:38:59 PM3/19/03
to
Marcin Lewandowski wrote:
> Marcin Tworek wrote:
>> Gdyby to bylo 2^4=16, to daje to mozliwosc zakodowania
>> 65536 znakow, czyli o wiele za duzo.
> A unicode to pies?

Kiedy wymyślono "bajt"?
Kiedy wymyślono "unicode"?

Pies był przed tymi oboma.

--
Pozdrówka,
Artur

Radoslaw Sokol

unread,
Mar 20, 2003, 1:59:17 AM3/20/03
to
Hi,

Marcin Tworek wrote:
>
> [...]


> Bajt ma akurat 8 bitow bo na tylu bitach da sie zakodowac
> 256 roznych znakow np ASCII.

Znaków ASCII jest 127 i są one kodowane na siedmu bitach ;)

A ośmiobitowy bajt był naturalnym rozszerzeniem czterobitowego
"nibble". Pierwsze procesory były czterobitowe, dwukrotne posze-
rzenie szyny danych dało osiem bitów. Na procesory szesnasto-
bitowe już trzeba było trochę poczekać, a w tym czasie ugrunto-
wało się pojmowanie bajtu jako jednej z podstawowych miar pojem-
ności pamięci (bo w zasadzie do niczego innego się bajtu nie
stosuje teraz -- procesory pracują na słowach znacznie szerszych
od bajtu).

Co do samego słowa "byte": jest ono dość swobodnym skrótem od
"binary octet", co idealnie oddaje liczbę zawartych w nim
bitów :) To w zasadzie powinno zakończyć dyskusję.

--
|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół | mailto:rso...@magsoft.com.pl |
| | http://www.grush.one.pl/ |
\................... ftp://ftp.grush.one.pl/ ............../

"Paweł_'Dziku'_Spychalski"___<dzikuNOSPAM@dzikie.net>

unread,
Mar 19, 2003, 6:14:05 PM3/19/03
to
Slaw A napisał(a):

> Bajt sklada sie z 8 bitow ale tylko 7 jest wykorzystanych 8-y to
> bit parzystosci.

He he..... z takimi teoriami to szybko zbijesz fortunę jako autor
teorii spiskowych :)
Anyway, bajt ma 8 bitów. Zawsze miał i zawsze będzie miał. A to, co my
z tymi bitami zrobimy to już nasza sprawa. Jak będziemy chcięli, to i 4
można na kontrolę poprawności przeznaczyć.
A wracając do tematu, chyba jakoś tak się złożyło, że określenie bajt
powstało gdy popularność osiągały procesory 8 bitowe.
A 256 znaków ASCII jest dlatego, że bajt ma 8 bitów a nie na odwrót.
Trzeba też zauważyć, że na ten przykład ludzikom angielskojęzycznym
spokojnie wystarcza 7 bitów. Tylko nam i reszcie świata z robakami
przydaje się ostatni bit.

Latet

unread,
Mar 20, 2003, 2:39:48 AM3/20/03
to
> Nie zupelnie. Pewne ograniczenia sa narzucone z gory.
> Oczywiscie nie sa to super sztywne ograniczenia, ale nie stosowanie
> sie do nich byloby maksymalnym utrudnianiem sobie zycia.
> Jako ze w kompach stosujemy system binarny to bajt musi
> byc jakas potego liczby 2. Czyli mamy 2^3=8, co daje nam
> mozliwosc zakodowania 256 znakow.


To w takim razie powiedz, co jest odpowiednikiem bajtu
w systemie dziesietnym?

Latet


Paweł Pawlak

unread,
Mar 20, 2003, 3:48:22 AM3/20/03
to
Użytkownik TJD napisał:

> A dlaczego kilometr ma 1000 metrów?
>

bo przedrostek "kilo" oznacza tysiąc (w "normalnym" świecie, nie
informatycznym :) )

Pozdrawiam,
Morris

Marcin Wojtczuk

unread,
Mar 20, 2003, 3:32:21 AM3/20/03
to
Latet claimed:

>> mozliwosc zakodowania 256 znakow.
> To w takim razie powiedz, co jest odpowiednikiem bajtu
> w systemie dziesietnym?

Nie ma potrzeby posiadania czegoś takiego.

--
[ http://www.stringi.com/viper/ ]
"Sami ze sobą jak dwie gwiazdy - Ty i ja!
Niech nam wino w ciałach gra.
Nasza jest cała ta noc!" -- De Mono

Marcin Wojtczuk

unread,
Mar 20, 2003, 3:36:29 AM3/20/03
to
Elektriko claimed:

>> A o rachunkach w systemach dwójkowych, ósemkowych i szesnastkowych
>> słyszeli "cuś"?
> A jak mają się rachunki w systemach dwójkowych, ósemkowych i szesnastkowych
> do bajta ?? Nie kumam Twojego toku rozumowania. Skłaniał bym się ku teori,
> że ma to coś wspólnego z długościa "słowa" w maszynach liczących zwanych
> komputerami.

Hyhy ;)
To pomnóż sobie w systemie szesnastkowym 7x9 a potem 8x8. I wszystko
będziesz wiedział. Dodaj sobie także 7+9, 4+6 i 8+16 w systemie dwójkowym.
Jak dla Ciebie łatwiej jest na liczbach nie będących potęgą dwójki, to
Ci podpowiem, że komputerowi jest łatwiej na potęgach dwójki. A łatwiej
oznacza szybciej.

A o tym słowie to sobie poczytaj. Bo słowo to wielokrotność bajtu :)

Marcin Lewandowski

unread,
Mar 20, 2003, 4:05:44 AM3/20/03
to

Zmienne typu char w języku C zajmuje 4 bajty (tyle co int). Ktoś jednak
pomyślał zawczasu.

Radoslaw Sokol

unread,
Mar 20, 2003, 4:20:27 AM3/20/03
to
Hi,

Marcin Lewandowski wrote:
>
> Zmienne typu char w języku C zajmuje 4 bajty (tyle co int). Ktoś jednak
> pomyślał zawczasu.

charsize.c:
int main()
{ printf("%i %i %i\n", sizeof(char), sizeof(short), sizeof(long)); return 0; }

C:\> gcc charsize.c -o charsize.exe -s
C:\> charsize
1 2 4
C:\>

Dalej jesteś pewien, że zajmuje cztery bajty? :)

To prawda, że wiele funkcji libc zwraca kody znaków jako int,
ale to wcale nie znaczy, że typ char jest równoważny typowi
int. Zresztą w byle FAQ dotyczącym C jest napisane, że typ char
odpowiada jednemu bajtowi pamięci (co innego wchar_t, który
w zależności od implementacji zajmuje 2 lub 4 bajty).

Cytat:

> C++ guarantees a char is exactly one byte, short is at least
> 2 bytes, int is at least 2 bytes, and long is at least 4 bytes.
> It also guarantees the unsigned version of each of these is
> the same size as the original, for example, sizeof(unsigned short)
> == sizeof(short).

To akurat dotyczy C++, ale ta sama zasada jest i w C jak widać.

Elektriko

unread,
Mar 20, 2003, 4:58:25 AM3/20/03
to
> Hyhy ;)
> To pomnóż sobie w systemie szesnastkowym 7x9 a potem 8x8. I wszystko
> będziesz wiedział. Dodaj sobie także 7+9, 4+6 i 8+16 w systemie dwójkowym.
^^^^^^^^^^^^^^^^ czy
to jest jakiś problem ??

> Jak dla Ciebie łatwiej jest na liczbach nie będących potęgą dwójki, to
> Ci podpowiem, że komputerowi jest łatwiej na potęgach dwójki. A łatwiej
> oznacza szybciej.
>
> A o tym słowie to sobie poczytaj. Bo słowo to wielokrotność bajtu :)

O Tym słowie to już się naczytałem ( nie wiem czy tak dużo jak Ty ), ale
nadal nie widzę związku... Poczytaj sobie jak liczy procesor... Wisi mu to
czy na 8 bitach czy na 9 (stary IBM) czy na 16. To jest kwestia
architektury. Z tego też powodu czasem na 8 bitów bezbieczniej jest
powiedzieć "oktet" niż Bajt. Uzywanie systemu szesnastkowego w "celach
programistycznych" to konsekwencja tych 8 bitów.Używamy go, żeby Nam było
łatwiej, nie procesorowi. On i tak przelicza sobie na binarny :) Chyba, że
podasz mi napięcie odpowiadające B (11d) ;)

Pozdrawiam. Elektriko


Marcin Wojtczuk

unread,
Mar 20, 2003, 6:14:21 AM3/20/03
to
Elektriko claimed:

>> Hyhy ;)
>> To pomnóż sobie w systemie szesnastkowym 7x9 a potem 8x8. I wszystko
>> będziesz wiedział. Dodaj sobie także 7+9, 4+6 i 8+16 w systemie dwójkowym.
> ^^^^^^^^^^^^^^^^ czy
> to jest jakiś problem ??

Sprawdź ;P

>> A o tym słowie to sobie poczytaj. Bo słowo to wielokrotność bajtu :)
> O Tym słowie to już się naczytałem ( nie wiem czy tak dużo jak Ty ), ale
> nadal nie widzę związku...

Hyh :) Sam pokazywałes na zwiazek, czemu się sprzeciwiłem ;>

> Poczytaj sobie jak liczy procesor... Wisi mu to
> czy na 8 bitach czy na 9 (stary IBM) czy na 16. To jest kwestia
> architektury.

Jakoś tak wyszło, że najmniejsze adresowalne jednostki pamięci we
współczesnych komputerach są potęgami dwójki. Przypadek ? Może masz jakąś
spiskową teorię ?

> Z tego też powodu czasem na 8 bitów bezbieczniej jest
> powiedzieć "oktet" niż Bajt.

Nie, bajt oznacza 8 bitów.

> Uzywanie systemu szesnastkowego w "celach
> programistycznych" to konsekwencja tych 8 bitów.Używamy go, żeby Nam było
> łatwiej, nie procesorowi. On i tak przelicza sobie na binarny :)

Właśnie tu się mylisz. Chodzi o to, że niczego nie musi przeliczać.

> Chyba, że
> podasz mi napięcie odpowiadające B (11d) ;)

Hm.. no więc ruscy chcieli kiedyś zrobić procesor w systemie trójkowym.
Ty byś chciał w systemie szesnastkowym ? Chyba z 10Hz by musiał mieć
zegar ;P

--
--
[ http://www.stringi.com/viper/ ]
"Do których drzwi zapukać mam, by módz otworzyć je?
I czy za nimi odnajdę to co znaleźć chcę ?" -- Varius Manx

Robert Szczygiel

unread,
Mar 20, 2003, 8:34:20 AM3/20/03
to
Marcin Wojtczuk wrote:
> Elektriko claimed:

>> Poczytaj sobie jak liczy procesor... Wisi mu to
>> czy na 8 bitach czy na 9 (stary IBM) czy na 16. To jest kwestia
>> architektury.

Teorii spiskowej tu żadnej nie ma, tylko efekty fizyczne. Okazało się
po prostu, że najprostszym system liczbowym, który można przetwarzać
elektronicznie jest system binary - a to akurat wynika z tego, że
tranzystor łatwo jest trakować jako 2-stanowy przełącznik. I łatwo
buduje się w oparciu o tranzystory układy przetwarzające dane w systemie
binarym. Systemy o wyższych podstawach są dużo bardziej skomplikowane w
obecnie dostępnych technologiach. Choć - być może - jak pojawią się
komputery kwantowe, to to się zmieni.

Inna sprawa, że (o ile dobrze pamiętam) system trójkowy byłby bardziej
efektywny od dwójkowego jeżeli chodzi przetwarzanie danych (gdzieś
kołacze mi się po głowie opracowanie, które kończyło się magiczną liczbą
"e" ~= 2.7, a trójka ma bliżej do 'e' niż dwójka).

Stąd obecność i obecna popularność systemu dwójkowego.

RobTM:)
--
** - Why a bike cannot stand up by itself?
** - Because it is two-tyred!
-- http://3226865153/~szczygie --

Marcin Lewandowski

unread,
Mar 20, 2003, 2:29:26 PM3/20/03
to
Radoslaw Sokol wrote:
> charsize.c:
> int main()
> { printf("%i %i %i\n", sizeof(char), sizeof(short), sizeof(long)); return 0; }
>
> C:\> gcc charsize.c -o charsize.exe -s
> C:\> charsize
> 1 2 4
> C:\>
>
> Dalej jesteś pewien, że zajmuje cztery bajty? :)

Nie mam akurat linuksa pod ręką, ale weź sprawdź kompilację zgodną z
ansi czy jakoś tak. Daję sobie ***[1] obciąć, że na samym początku w C
char był tyle co int. Zmienili to w C++ oraz w standardowych
ustawieniach gcc.

P.S. Chociaż bardzo możliwe, że już w gcc tego nie ma. Kiedyś było na pewno.

[1] chodzi oczywiście o podatki :-)

Gawelek

unread,
Mar 20, 2003, 2:44:40 PM3/20/03
to
Hmmmm, to w koncu jest jakies logiczne uzasadnienie faktu podanego w temacie
?
Mam wrazenie, ze rozmowa jakos tak ominela glowny nurt :(


Gawel


Marcin Tworek

unread,
Mar 20, 2003, 2:54:07 PM3/20/03
to
> Hmmmm, to w koncu jest jakies logiczne uzasadnienie
> faktu podanego w temacie Mam wrazenie, ze rozmowa
> jakos tak ominela glowny nurt :(

To jest uzasadnienie dlaczego system w komputerze jest binarny,
a nie dlaczego bajt ma 8 bitow. A to czemu system jest binarny
to chyba oczywiste.
Moim zdaniem rozmowa wcle nie minela glownego nurtu.
W tym watku dokladnie zostala wyjsniona sprawa z tematu.
Pozdr,
Marcin Tworek

Artur Gawryszczak

unread,
Mar 20, 2003, 3:00:36 PM3/20/03
to
Marcin Lewandowski wrote:

> Nie mam akurat linuksa pod ręką, ale weź sprawdź kompilację zgodną z
> ansi czy jakoś tak. Daję sobie ***[1] obciąć, że na samym początku w C
> char był tyle co int. Zmienili to w C++ oraz w standardowych
> ustawieniach gcc.

Wg. książki K&R "ANSI C" char ma pomieścić dowolny element zbioru znaków
danej instalacji. Opis <limits.h> specyfikuje że nie może to być mniej
niż 8 bitów. Stosowanie 16, czy 32 bitów wszędzie, gdzie znaki mają
reprezentacje 8-bitowe byłoby głupotą ze względu na marnowanie pamięci i
mogłoby powodować znaczne zmniejszenie prędkości wszelkich operacji na
tekście ze względu na ograniczone rozmiary cache procesora. W praktyce
nie widziałem jeszcze kompilatora, który pod zwykły char domyślnie brałby
więcej niż 1 bajt pamięci. Jedynie czasem się zdarza, że np. w
strukturach między char a double (lub cokolwiek innego dłuższego niż 1
bajt) zostawia sie parę bajtów miejsca, aby double zaczynał się od adresu
podzielnego przez 2, 4, 8, czy ile tam jest dobrze dla danego procesora
(aligning).

--
Pozdrówka,
Artur

Marcin Witek

unread,
Mar 20, 2003, 3:14:42 PM3/20/03
to
Marcin Lewandowski <m...@remove.op.pl> wrote:
: Nie mam akurat linuksa pod ręką, ale weź sprawdź kompilację zgodną z
: ansi czy jakoś tak. Daję sobie ***[1] obciąć, że na samym początku w C
: char był tyle co int. Zmienili to w C++ oraz w standardowych
: ustawieniach gcc.

Z ksiazki Briana Kernighana i Dennisa Ritchie (ci panowie "stworzyli"
jezyk C):
"char - jeden bajt, zdolny pomiescic jeden znak z lokalnego zestawu znakow"

Typ char oczywiscie zalezy od maszyny, jak pisza w tej ksiazce na
komputerze Honeywell 6000 mial 9 bitow, czyli nie byl bajtem.
A ansi to bylo duzo, duzo pozniej :)
Natomiast o ile pamietam wymagania sa takie:

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

Czyli jest mozliwa sytuacja w ktorej char ma wielkosc inta, ale to ma sens
chyba tylko na komputerach 8 bitowych na ktorych, w dodatku, ktos nie zrobil
od razu inta 16 bitowego.

: P.S. Chociaż bardzo możliwe, że już w gcc tego nie ma. Kiedyś było na pewno.

Moze na jakas "specjalna" kompilacje gcc trafiles?

Wit

Gawelek

unread,
Mar 20, 2003, 3:28:11 PM3/20/03
to
>Moim zdaniem rozmowa wcle nie minela glownego nurtu.
>W tym watku dokladnie zostala wyjsniona sprawa z tematu.

To moglbys mi wskazac to miejsce, bo cos nie moge go zlokalizowac.


Gawel


Wojciech Giersz

unread,
Mar 20, 2003, 5:08:44 PM3/20/03
to

Kto Ci powiedział, że bajt ma 8 bitów? Tak się zwyczajowo przyjmuje, myląc
bajt z oktetem. Z reguły różnicę można spokojnie pominąć, choć w
akademickich dyskusjach jednak bajt to bajt, a 8 bitów to 8 bitów.
Bywają komputery, dla których bajt to np. 6, 7, 9, a czasem i nawet 36
bitów o ile dobrze pamiętam strukturę PDP-10. A sam bajt to po prostu
rozmiar pamięci potrzebnej na przechowanie reprezentacji jednego znaku.
Jeśli np. maszyna operuje tylko 64-znakowym alfabetem, to bajt w tym
wypadku ma 6 bitów.

Wszystko IMHO, choć raczej się nie mylę, jako, że Chektor nigdy się nie
myli :)

> Gawel

--
Chektor
.Wojciech.Giersz .................. che...@malenstwo.iinf.polsl.gliwice.pl .
.125p: '69 1300 -- '85 1500 -- jeden '71 na oku -- http://fso.lotnisko.net/.
............." Jestem zegarem. Mam wskazowki od psychiatry. "...............

Radoslaw Sokol

unread,
Mar 21, 2003, 3:16:54 AM3/21/03
to
Hi,

Marcin Lewandowski wrote:
>
> Nie mam akurat linuksa pod ręką, ale weź sprawdź kompilację zgodną z
> ansi czy jakoś tak. Daję sobie ***[1] obciąć, że na samym początku w C
> char był tyle co int. Zmienili to w C++ oraz w standardowych
> ustawieniach gcc.

Masz rację: na początku char był równy int. Ale int miał
wtedy jeden bajt i odpowiadał też shortowi! :)

O ile dobrze mi wiadomo char ma odpowiadać pojedynczemu znakowi
tekstowemu na danej maszynie. sizeof(char) _zawsze_ powinno
być równe 1, tylko rozmiar podstawowego słowa maszyny niekon-
iecznie musi być równy 8 b (IMHO w takim przypadku już trudno
mówić o bajcie, lepiej operować na słowach).

Absurdalne by było, gdyby tekst zapisany w tablicy char[128]
zajmował ponad 128 bajtów -- szczególnie na pececie, gdzie od
samego początku przyjmowano zasadę "jeden znak ASCII - jeden
bajt".

Robert Szczygiel

unread,
Mar 21, 2003, 4:17:37 AM3/21/03
to
0 new messages