Татьяна
Просветленный
(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 неделю назад
А ещё вопросик, а если бы это в битах указывалось? То тут важно было бы использовать 128 вместо 129, так как ещё один блок захватился бы, то есть 256 в общем, или в каких случаях обязательно использовать 128 но не в коем случае не 129. Вот есть те же изоброжения, которые в основном используют размер 128*128 или 256*128 или 4096*1024
2. Вот я допустим пишу код в pawn и вижу в видеоуроках, как скриптер пишет new string[512] то есть он создаёт переменную которая ровна 512 символам, а один символ 4 байта. То есть 512*4(2048) байт используеться программой. И вот вопрос, экономиться ли от этого память? Если использовать 2048, а не допустим 2049, не будет ли это захватывать ещё один блок памяти, что бы поджать под себя в общей сложности 4096 байт, или это уже будет происходить на "битовом" уровне то есть будет 2048 байт и 1 бит, если прописать вот так new string[2049].