ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
7 июля
196795 Топик полностью
ReAl (07.06.2010 14:12, просмотров: 81) ответил fk0 на Удобно, на самом деле, на 15 символов. или на 7. На 2^N-1. А размер буфера 2^N (чтоб по-маске ANDить индекс в массиве). А N-1 -- чтоб не заводить отдельно битовую переменную "полностью занят" или "полностью пуст".
Если завести не rd_index, wr_index, а rd_index, elem_count и писать по (rd_index+elem_count)&len_mask, то и отдельная флаговая переменная не нужна, и зря байт в буфере не пропадает. А если разменивать байт в буфере на отдельню флаговую переменную, то тогда особого смысла нет и проще 2N-1 А если это что-то другое (скажем, UART+SLIP) то в одном байте можно натыкать флагов и для полон/пуст, и для признака подстановки, и это в нём одном и на приём и на передачу -- тогда экономичнее флаги. Каждый раз другие соображения вылазят :-) Впрочем, этот оффтоп не имеет отношения к связи длины буфера клавиатуры с размером редактируемого файла.