Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование | Код | Память

EkuEkuUU EkuEkuUU Ученик (98), открыт 1 неделю назад
  1. Почему программисты используют числа в степени двойки, то есть например (256, 512, 1024, 4096) когда указывают размер какой-то переменной?
    2. Вот я допустим пишу код в pawn и вижу в видеоуроках, как скриптер пишет new string[512] то есть он создаёт переменную которая ровна 512 символам, а один символ 4 байта. То есть 512*4(2048) байт используеться программой. И вот вопрос, экономиться ли от этого память? Если использовать 2048, а не допустим 2049, не будет ли это захватывать ещё один блок памяти, что бы поджать под себя в общей сложности 4096 байт, или это уже будет происходить на "битовом" уровне то есть будет 2048 байт и 1 бит, если прописать вот так new string[2049].
Дополнен 1 неделю назад
Отвечайте ток если вы программист аххах, а то тут копипастеров набежало
2 ответа
Blade Wood Мастер (1213) 1 неделю назад
  1. Программисты используют числа в степени двойки, потому что это удобно. Двоичная система счисления используется в компьютерах, и степень двойки позволяет легко определить количество бит, необходимое для хранения данных.
  2. Не понял вашего вопроса.
Татьяна Просветленный (29259) 1 неделю назад
Почему программисты используют числа в степени двойки?
Программисты часто используют числа в степени двойки (например, 256, 512, 1024, 4096) по нескольким причинам:

Эффективность работы с памятью: Компьютеры работают с памятью, организованной в блоки, размер которых обычно является степенью двойки. Это связано с тем, что двоичная система счисления (основание 2) является основой работы компьютеров. Использование степеней двойки позволяет более эффективно управлять памятью и уменьшает фрагментацию.

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

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

Вопрос о размере переменной в Pawn
Когда вы создаете массив new string[512] в языке Pawn, вы выделяете память для 512 символов. Если каждый символ занимает 4 байта, то общий объем памяти будет 2048 байт.

Если вы создадите массив new string[2049], то программа выделит память для 2049 символов, что составит 8196 байт (2049 * 4). В этом случае, память будет выделена точно под указанный размер, и не будет захватываться дополнительный блок памяти до следующей степени двойки (4096 байт).

Экономия памяти
Использование чисел, которые не являются степенями двойки, не приведет к значительной экономии памяти, если разница небольшая (например, 2048 байт против 2049 байт). Однако, если вы используете числа, которые значительно превышают степень двойки, это может привести к неэффективному использованию памяти.

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

Таким образом, использование чисел в степени двойки в основном связано с оптимизацией производительности и эффективностью работы с памятью, но в конкретных случаях, как в вашем примере с Pawn, это не обязательно приведет к значительной экономии памяти.
EkuEkuUU EkuEkuUUУченик (98) 1 неделю назад
Ого, вы откуда это всё знаете, спасибо большое!
EkuEkuUU EkuEkuUUУченик (98) 1 неделю назад
А ещё вопросик, а если бы это в битах указывалось? То тут важно было бы использовать 128 вместо 129, так как ещё один блок захватился бы, то есть 256 в общем, или в каких случаях обязательно использовать 128 но не в коем случае не 129. Вот есть те же изоброжения, которые в основном используют размер 128*128 или 256*128 или 4096*1024
Похожие вопросы