Dlaczego bajt ma tylko od 0 do 255?

Dlaczego bajt ma zakres od 0 do 255?

 27
Author: alain.janinm, 2011-02-13

8 answers

Ściśle mówiąc, termin "bajt" może w rzeczywistości odnosić się do jednostki o innych wartościach niż 256. Po prostu to jest prawie uniwersalny rozmiar. Z Wikipedii :

Historycznie bajt był liczbą bity używane do kodowania pojedynczego znaku tekstu w komputerze i jest dla z tego powodu podstawowe adresowalne element w wielu komputerach architektury.

Wielkość bajtu ma historycznie był zależny od sprzętu i nie istnieją normy definitywne, które / align = "left" / De facto standard ośmiu bitów jest wygodnym potęga dwóch wartości 0 przez 255 dla jednego bajtu. Wiele rodzajów aplikacji używa zmiennych reprezentowalne w ośmiu lub mniejszej liczbie bitów, i projektanci procesorów optymalizują dla to powszechne użycie. Popularność duża komercyjna Informatyka architektury pomogły w wszechobecna akceptacja 8-bitowego rozmiar. Termin oktet został zdefiniowany na wyraźnie oznaczamy a Sekwencja 8 bitów ze względu na niejednoznaczność związaną z terminem bajt.

Jak na ironię, w dzisiejszych czasach rozmiar "pojedynczego znaku" nie jest już uważany za pojedynczy bajt w większości przypadków... najczęściej idea "znaku" jest związana z Unicode, gdzie znaki mogą być reprezentowane w wielu różnych formatach, ale zazwyczaj są to 16 bitów lub 32.

Byłoby to zabawne dla systemu, który używał UCS-4 / UTF-32 (bezpośrednia 32-bitowa reprezentacja Unicode) aby wyznaczyć 32 bity jako bajt. Zamieszanie wywołane byłoby spektakularne.

Zakładając jednak, że weźmiemy "bajt" jako synonim "oktetu", istnieje osiem niezależnych bity, każdy z nich może być włączony lub wyłączony, prawda lub FAŁSZ, 1 lub 0, jakkolwiek chcesz o tym myśleć. Prowadzi to do 256 możliwych wartości, które są zwykle ponumerowane od 0 do 255. (Jednak nie zawsze tak jest. Na przykład projektanci Javy niestety postanowili traktować bajty jako signed liczby całkowite w zakresie od -128 do 127.)

 50
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-13 23:27:28

Ponieważ bajt , według standardowej definicji, wynosi 8 bitów, które mogą reprezentować 256 wartości (od 0 do 255).

 23
Author: Daniel A. White,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-13 20:30:30

Bajt ≠ Oktet

Dlaczego bajt ma zakres od 0 do 255?

Nie ma.]}

Oktet mA 8 bitów, co pozwala na 28 możliwości. bajt {[10] } jest źle zdefiniowany. Nie należy utożsamiać tych dwóch terminów, ponieważ nie są one całkowicie wymienne. Również języki programowania wicked, które obsługują tylko znaki podpisane (ww ᴡʜᴏ ʏᴏᴜ ᴀʀᴇ ﹗) może reprezentować tylko wartości -128 do 127, a nie 0 do 255.

Big Iron takes a długo rdzewieje.

Większość, ale nie wszystkie nowoczesne maszyny mają 8-bitowe bajty, ale jest to stosunkowo niedawne zjawisko. Z pewnością nie zawsze tak było. Wiele bardzo wczesnych komputerów miało 4-bitowe bajty, a 6-bitowe bajty były kiedyś powszechne nawet stosunkowo niedawno. Oba te typy bajtów posiadają raczej mniej wartości niż 255.

Te 6‑bitowe bajty mogą być całkiem wygodne, ponieważ przy słowie o rozmiarze 36 bitów, sześć takich bajtów idealnie pasuje do jednego z tych 36-bitowych słowa bez żadnego jiggingu. To bardzo przydatne do przechowywania Fieldata, używane przez bardzo popularne Sperry ᴜɴɪᴠᴀᴄ komputery. Możesz umieścić tylko 4 znaki ᴀsᴄɪɪ w 36‑bitowym słowie, a nie 6 fieldata. Mieliśmy serię 1100 w centrum obliczeniowym, kiedy byłem studentem, ale to pozostaje prawdą nawet w przypadku nowoczesnej serii 2200.

Enter ASCII

ᴀsᴄɪɪ - który był i jest tylko 7‑ a nie 8‑bitowy kod-utorował drogę do wyrwania się z tego świat. Znaczenie ɪʙᴍ 360, które miało 8‑bitowe bajty, niezależnie od tego, czy posiadały ᴀsᴄɪɪ, czy nie, nie powinno być zaniżone.

Mimo to wiele maszyn długo obsługiwało Radix‑50. Był to repertuar 40-znakowy, w którym trzy jego znaki mogły być skutecznie pakowane w pojedyncze słowa 16-bitowe pod dwoma różnymi schematami kodowania. W czasie studiów korzystałem z wielu rzeczy, a RAD-50 był po prostu faktem życia, rzeczywistością, która musiała być zakwaterowane.
 23
Author: tchrist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-13 20:53:49

Mylisz się! Bajt waha się od 0 do 63 lub od 0 do 99!

Czy wierzysz w Boga? Bóg powiedział w Pismo Święte .

Podstawową jednostką informacji jest bajt. Każdy bajt zawiera nieokreśloną ilość informacji, ale musi być zdolny do przechowywania co najmniej 64 różnych wartości. Oznacza to, że wiemy, że każda liczba od 0 do 63, włącznie, może być zawarta w jednym bajcie. Ponadto każdy bajt zawiera co najwyżej 100 odrębnych wartości. Na binarnym komputer bajt musi więc składać się z sześciu bitów; na komputerze dziesiętnym mamy dwie cyfry na bajt.* - Sztuka programowania komputerowego. Tom 1. autor: Donald Knuth.

I...

* od 1975 roku słowo "bajt" stało się ciągiem dokładnie ośmiu cyfr binarnych, mogących reprezentować liczby od 0 do 255. Bajty świata rzeczywistego są więc większe niż bajty hipotetycznej maszyny MIX; w rzeczywistości stary styl Mixa bajty są ledwo większe od nybbli. Kiedy mówimy o bajtach w połączeniu z mixem, ograniczymy się do dawnego znaczenia tego słowa, nawiązując do czasów, kiedy bajty nie były jeszcze standaryzowane. - Sztuka programowania komputerowego. Tom 1. autor: Donald Knuth.

:-)

 6
Author: RedPain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-31 01:29:29

Bajt ma 8 bitów (8 1 lub 0) 01000111=71

Każdy bit reprezentuje wartość, 1,2,4,8,16,32,64,128 ale od prawej do lewej ?

Przykład

128, 64, 32, 16, 8, 4, 2, 1,
0    1   0   0   0  1  1  1 =71
1    1   1   1   1  1  1  1 = max 255
0    0   0   0   0  0  0  0 = min 0

Używając binarnych 1 lub 0 i tylko 8 bitów (1 bajt) możemy mieć tylko

1 z każdej wartości 1 X 128, 1 x 64,1 x 32 itd., co daje maksymalnie 255 oraz min 0

 6
Author: Glen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-15 06:58:01

Bajt ma tylko 8 bitów. Bit jest cyfrą binarną. Tak więc bajt może zawierać 2 (binarne) ^ 8 liczby z zakresu od 0 do 2^8-1 = 255.

To to samo, co pytanie, dlaczego 3-cyfrowa liczba dziesiętna może reprezentować wartości od 0 do 999, na które odpowiada się w ten sam sposób (10^3 - 1).

Początkowo bajty nie zawsze były 8 bitami. Reprezentowały one "parę" bitów, które również mogły być 6, 7 lub 9 bitów. To było później znormalizowane i miało sens, aby te jednostki mocy dwóch, ze względu do binarnej natury obliczeń. W ten sposób powstał skubaniec (4 bity lub pół bajtu) i 8 bitowy bajt.

[edytuj] Dlatego też popularne stało się numerowanie ósemkowe i szesnastkowe. Jedna liczba ósemkowa reprezentuje 3 bity, a jedna liczba szesnastkowa reprezentuje 4 bity. Tak więc cyfra szesnastkowa może reprezentować dokładnie jeden bajt. O wiele bardziej sensowne jest posiadanie liczby od 0 do 0xFF niż od 0 do 255. :)

 5
Author: GolezTrol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-13 20:18:42

Zauważ, że na komputerach z serii PDP-10 bajt był konstrukcją o zmiennej długości, zdefiniowaną przez "wskaźnik bajtów", który określał liczbę bitów, a także przesunięcie od początku obszaru pamięci. Następnie powstał zestaw instrukcji maszynowych do radzenia sobie ze wskaźnikiem bajtowym, w tym:

  • LdB-Load Byte
  • DPB-Bajt depozytowy
  • ILDB-wskaźnik inkrementacji, następnie Wczytaj Bajt
  • IDPB-Increment pointer, then Deposit Byte (hope I got this one right - it doesn ' t feel right)

W rzeczywistości "bajt" był tym, co dziś nazwalibyśmy polem bitowym. Użycie wskaźnika bajtowego do reprezentowania następnego w serii bajtów o tym samym rozmiarze było tylko jednym z jego zastosowań.

Niektóre z używanych zestawów znaków to "sixbit" (tylko wielkie litery, sześć bajtów do słowa 36-bitowego), ASCII (wielkie i małe litery, pięć bajtów do słowa, z bitem pozostałym), i tylko rzadko EBCDIC (zestaw znaków IBM, który używał czterech ośmiobitowych bajtów na słowo, marnotrawstwo). pozostawiając cztery bity na słowo nieużywane).

 3
Author: John Saunders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-14 01:31:14

Ściśle mówiąc, nie ma.

W większości nowoczesnych systemów bajt wynosi 8 bitów binarnych, ale w niektórych systemach nie zawsze tak było (wiele starszych komputerów używało 7 bitów do reprezentowania znaków ASCII (aka bajtów), a systemy kart perforowanych były często oparte na znakach 6-bitowych (aka bajtów), na przykład).

Jeśli mówimy o 8-bitowym bajcie, może to reprezentować dowolny zakres. Jednak może reprezentować tylko 256 różnych wartości , więc jest zwykle używany do reprezentować 0..255 ("unsigned byte") lub -128..+127 ("signed byte").

 3
Author: Jason Williams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-22 23:31:45