Вы можете, но операционные системы не могут. И флэш-накопители, и жесткие диски читаются (и записываются) по секторам и только по секторам. Драйвер устройства обычно применяет это ограничение к более высокому уровню, а также читает весь сектор, например, с суперблоком NTFS, намного быстрее, чем неявное чтение того же сектора несколько раз из-за драйвера, который переводит запросы "байтового диапазона" в запросы "сектора", поэтому драйверы файловой системы также выполняют операции чтения и записи по секторам (или любым умножениям секторов: существует технология под названием DMA - прямой доступ к памяти -, которая позволяет читать и записывать большие пакеты секторов без использования времени ЦП, что делает доступ к диску очень быстро).
Флэш- чипы (не диски) технически разделены на другие блоки данных по двум причинам:
- Флеш-чипы могут считываться из любой позиции в любую позицию, но записываться только с помощью блоков фиксированного размера и позиционирования.
- Флэш-чипы содержат больше данных и свободного места, чем вы думаете, потому что это нормально для чипа получить несколько неисправных секторов во время работы. Они переназначаются в другие сектора контроллером хранилища на USB-накопителе и не видны для ОС как поврежденные сектора; фактически нет никакого программного способа проверить, существуют ли они. Опять же, контроллеры флэш-памяти всегда оснащены алгоритмами, которые позволяют беспрепятственно заменять неисправные сектора без какого-либо уведомления для верхних уровней.
Документ NTFS, который вы читаете, не предлагает считывать эти переменные байтами. Вам необходимо прочитать их во всех секторах, в которых они содержатся, а затем обратиться к определенному байту в памяти.
Также недавняя память (фактически любая на 386-совместимом компьютере) не адресована байтами. Вместо этого к нему обращаются 32- (редко), 64- и даже 128-битные слова. И когда вы читаете байт в середине такого текстового процессора, действительно запрашивает все слово, а затем выбирает нужный вам байт. Существует даже аппаратное исключение на некоторых 64-разрядных процессорах, которое возникает при попытке получить доступ к невыровненному (по границе 64-разрядного слова) указателю.