т.е. 2^8 значений, т.е. 0..255, но никак байт не будет равен 256, 257 и т.д.
и си, паскали тут вообще не причем.
Вид для печати
Многие наверняка нижеописанное знают, однако, мало ли. Чуток оффтопного капитанства в продолжение темы байта.
Принимать он может 256 значений, часто применяются лукап-таблицы по 256 байт (или 256+256 для 16-битных слов), но я не про это.
У восьмиразрядного счетчика, коим является байт - ну или регистр, что чаще - есть одно замечательное свойство.
Неважно, какое значение мы прибавляем к байту (регистру) - через 256 повторов мы получим изначальное содержимое счетчика.
Для четных приращений оно "вернется" раньше, кратно степени двойки, т.е. на 256 повторов получим 2/4/8 и так далее возвратов к исходному числу.
Для любой нечетной прибавки, хоть +1, хоть +171, через 256 шагов счетчик примет исходный вид. Разумеется, оперируя байтом, а не словом.
Соответственно, если с неким шагом перебирать таблицу в 256 байт через приращение младшего регистра в паре, за 256 проходов она гарантированно будет обработана.
я о тёплом, вы о мягком....
байт может кодировать ровно 256 значений от %00000000 до %11111111. нет там ни 256, ни 511, 510 и т.п.
как значение байта интерпретирует программер, это уже совсем иной вопрос.
Каждый прав, исходя из собственного определения байта. Суть одна и та же.
Изначально человека знакомят с битом, а потом с байтом как восьмью битами.
Учащийся должен сам попытаться посчитать, сколько различных состояний может принимать один бит, два бита, три бита и наконец восемь бит.
С другого захода человеку рассказывают, что есть десятичная система, где основание десять, а есть всякие другие. Особенно двоичная.
А наивный вопрос "что первично?", он как то сам по себе возникает в голове стайных животных с иерархией. Кто главнее?
Вот тот же z80 он по разному интерпретирует байт.
Как 8 уникальных бит в логических операциях.
Как ряд из 8 бит в операциях сдвига.
как целое 0..255 или -128..127 в операциях сложения отнимания, в зависимости от дальнейшего использования флагов.
Как смещение -128..+127 в коротких переходах и обращениях по индексным регистрам.
Чуть костылнее двоичнодесятичное представление и как два набора по четыре бита.
Видеосистема zx интерпретирует байт как ряд из 8 бит-пикселей и как совокупность бита мигания, бита яркости, 8 цветам подложки и 8 цветам чернил.
В других портах тоже соответствующие интерпретации.
Хотя первичны электрические состояния в восьми пронумерованных проводниках.
А программист может интерпретировать гораздо шире. Считать, например, байт числом от 1900 до 2155.
Определение же байта тоже у всех может быть разное. Смотря с какой стороны ты к сути байта подошёл.
И вот тут (снова пооффтоплю) виден разный подход у разных людей. Вернёмся в прошлый век, к первым компам, да даже к первым линейкам PC, где год даты задавался всего одним байтом для экономии памяти. Вводился он непосредственным значением, скажем, 90-й. Может, там даже использовали символьное представление, тогда уходит два байта. В результате получили знаменитую "проблему 2000" при обнулении этого самого числа. Но что мешало задать дату смещением, выбрав за точку отсчёта некий год, например, год создания первого компьютера или (для удобства отсчёта) 1900-й, например? Всего один байт смещения решил бы проблему даты на двести с лишним лет вперёд - по сути, навсегда.
Ну вот Unix date считается с 1972 года, и в 2036 юниксовы года закончатся. Это не решение проблемы, а заметание мусора под ковёр. Лучше всё-таки хранить дату, как есть.