Не могли бы вы? Конечно. Сэкономит ли это место? Может быть, в зависимости от того, сколько работы вы хотите сделать. Вы должны понимать, что процессор 32-битный, а это означает, что он имеет 4-байтовые регистры, так что именно так он захочет хранить и получать доступ к вещам. Чтобы принудительно использовать 3-байтовое «int», вам нужно сохранить его в массиве байтов и извлечь его из массива по выровненному адресу перед использованием. Это означает, что если вы сохраните его коротким, компилятор либо дополнит его (и вы потеряете всю эффективность, которую, по вашему мнению, создали), либо будет намного медленнее читать и писать.
Если это настольное приложение, то как именно экономия места является основным соображением, особенно когда речь идет о 1 байте на элемент? Штраф за доступ к элементу может изменить ваше мнение о том, насколько критичен этот байт.
Я бы сказал, что если этот 1 байт действительно важен, то, возможно, вы все равно используете неправильный язык. Количество байтов, которое вы бы сэкономили, если бы не устанавливали и не использовали CLR, в первую очередь составляет много этих байтов.
Боковое примечание: вы также сделаете сдвиг, а не умножение (хотя компилятор, скорее всего, сделает это за вас).
person
ctacke
schedule
15.01.2009