Почему мы всегда объявляем, что константы полномочия 2?

Вы подразумеваете, что, в браузерах, которые поддерживают его, word-wrap: break-word , не работает?

, Если включенный в определение тела таблицы стилей , это должно работы всюду по всему документу.

, Если переполнение не является хорошим решением, только пользовательский JavaScript мог бы искусственно разбить длинное слово.

Примечание: существует также это тег Разрыва слова . Это дает браузеру место, где он может разделить строку. К сожалению, эти тег не работает во всех браузерах, только Firefox и Internet Explorer (и Opera с приемом CSS).

10
задан Alex Riley 26 April 2015 в 21:33
поделиться

9 ответов

Степень двойки удобна, потому что она хорошо соответствует основным ограничениям оборудования.

Например:

  1. Размер страницы
  2. Пределы адресного пространства
  3. Константы выравнивания (DWORD или Выравнивание QWORD обычно, обе степени 2)

Для флагов степени 2 всегда имеют один бит. Такие вещи, как MY_FLAG_1 | MY_FLAG_2 | MY_FLAG_3 | ... работают только с степенями двойки. То же самое для тестирования флагов с и .

Это также своего рода соглашение о выборе ближайшей большей степени двойки для размеров буфера и т.п.

29
ответ дан 3 December 2019 в 13:19
поделиться

Одной из веских причин является битовая маска . Например, если вы используете константы для представления атрибутов объекта (или чего-либо еще), вы можете сохранить множество атрибутов в одно целое число с помощью битовой маски и идентифицировать отдельные атрибуты позже. Отлично подходит для сохранения многих «флагов» в базе данных.

18
ответ дан 3 December 2019 в 13:19
поделиться

Память обычно выделяется из операционной системы в количестве, кратном размеру страницы, и во многих случаях полезно расположить все так, чтобы страницы точно соответствовали страницам (чтобы не тратить память впустую). Действительно ли это помогает, зависит от конкретной процедуры распределения; например, если есть неявный заголовок, размер, равный степени двойки, на самом деле может повредить.

4
ответ дан 3 December 2019 в 13:19
поделиться

Когда дело доходит до размеров массива, я подозреваю, что предпочтение отдается степени двойки по двум причинам. Во-первых, о чем свидетельствуют несколько ответов здесь, это то, что программисты, которые не знают, что происходит «под капотом», похоже, в целом считают, что было бы как-то более эффективно использовать степень двойки. Другой (в настоящее время в основном исторический) связан с циклическими буферами.

Циклические буферы, которые являются степенями двойки, могут обрабатываться легче и быстрее с использованием масок, которые могут использоваться для индексов чтения и записи (или указателей), а не с использованием обычно более медленных операция по модулю или использование условий, требующих ветвлений. Это было критически важно на старых машинах, но все еще может быть важно для передачи больших объемов данных - например, обработки графики

. Например, в C,

2
ответ дан 3 December 2019 в 13:19
поделиться

Размеры наших переменных - это степени двойки (1, 2, 4 или 8 байтов). Компьютеру комфортно работать на этих границах. Раньше мы тщательно дополняли наши структуры, чтобы код работал быстрее, а иногда и для упрощения арифметики указателей.

Если у вас есть выбор между размером 256 и 257, мы выбираем 256. Одна причина будет для отладки. Когда вы смотрите на память или в файл, ваш отладчик или программа просмотра шестнадцатеричных файлов покажет данные в строках, равных степени двойки.

Вот тот, который показывает 16 байтов в строке группами по 4.

alt text
(источник : wikimedia.org )

Для флагов мы сделали их степенью двойки, чтобы мы могли рассматривать их все отдельно в одной переменной, а не во многих переменных или массиве.

Таким образом, все они могут быть or'd to и and'd из той же переменной.

2
ответ дан 3 December 2019 в 13:19
поделиться

На самом деле особой причины нет. Из-за выравнивания переменных в структурированном виде и в стеке массив из трех байтов, скорее всего, займет 4 или 8 байтов в памяти. Я думаю, это просто приятно.

Выделение целого числа страниц из кучи может работать не так эффективно, как хотелось бы, из-за накладных расходов на внутреннюю структуру кучи. Выделение 4096 байтов (1 страница для 32-разрядной машины с Windows) может привести к выделению 4104 байта или более.

Если константы являются флагами, то ситуация совсем другая. Обычно более эффективно иметь битовые флаги, чем флаги в некоторой базе, отличной от степени 2.

1
ответ дан 3 December 2019 в 13:19
поделиться

В двоичных компьютерах удобно использовать основанные на стандартах двоичные кратные , такие как Мебибайт (или Киби, Гиби, Теби ...). Эти числа степени двойки также хорошо смотрятся в восьмеричной или шестнадцатеричной нотации.

1
ответ дан 3 December 2019 в 13:19
поделиться

Добавление дополнительных битов к микросхеме памяти обычно выполняется путем четырехкратного увеличения числа «ячеек» на микросхеме. В два раза шире, в два раза длиннее, в четыре раза больше памяти (за исключением меньших расстояний между «ячейками»).

Также легче умножать, используя один сдвиг, чем общий алгоритм умножения, добавляющий последовательные сдвиги в зависимости от того, бит установлен или нет. OpenGL был известен тем, что требовал мощности двух размеров для текстур для доступа к определенным строкам развертки.

1
ответ дан 3 December 2019 в 13:19
поделиться

Поскольку компьютерная память работает с 0/1, то есть в двоичной системе.

-2
ответ дан 3 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: