Верно ли, что например число 15 лучше присвоить переменной типа char, а не int? Потому что int занимает 2 байта памяти, то есть 16 бит . А у меня число 15, которое занимает всего 4 бита. И получается что если я присвою 15 переменной int, то я буду использовать память не рационально. Потому что 12 битов памяти будут заняты для int переменной впустую и там ничего храниться не будет, и только 4 бита будут использоваться для числа 15, то есть 1111.
А char 1 байт, то есть 8 бит, то есть "пустыми" останутся вчего 4 бита, а 4 "заполнены" чилом 15, то есть 1111.
Если вопрос тупой, не судите строго, я только начал учить яп)))
Другие языки программирования и технологии
C++ Про выбор типа данных. Int, char и т. д.
По-разному может быть. Если это единственная переменная, то лучше использовать int, поскольку он быстрее обрабатывается процессором. Или это не важно: компилятор всё равно выравнивает границы переменных. Но если тебе надо хранить огромный массив данных, то лучше использовать char.
Переменная не может быть меньше байта. В принципе возможно хранить данные в отдельных битах. Но чтоб это имело смысл, в других битах тоже должно что-то хранится. И как я уже сказал, это имеет смысл только если много данных.
Переменная не может быть меньше байта. В принципе возможно хранить данные в отдельных битах. Но чтоб это имело смысл, в других битах тоже должно что-то хранится. И как я уже сказал, это имеет смысл только если много данных.
Можешь вообще ассемблер использовать для экономии памяти.
1) int это 32 или 64 бита, в зависимости от системы.
2) операции над данными различной размерности требуют разных команд от процессора, что может быть быстрее или медленнее
3) как правило, char используют как константу, единицу массива, или для логических действий.
4) не нужно печься об утилизации памяти, ибо компилятор оптимизирует большинство подобных проблем
2) операции над данными различной размерности требуют разных команд от процессора, что может быть быстрее или медленнее
3) как правило, char используют как константу, единицу массива, или для логических действий.
4) не нужно печься об утилизации памяти, ибо компилятор оптимизирует большинство подобных проблем
Валера Савитский
"не нужно печься об утилизации памяти, ибо компилятор оптимизирует большинство подобных проблем" - просто хочется знать тему очень глубоко и уметь делать максимально оптимизированные проги)
Я вам могу рассказать урок, может, чему-то научит. Однажды на заре Интернета нашёлся умник, который посмотрел на переменную типа int, в которой хранился ip-адрес. 4 байта. Тогда экономили каждый байт, памяти было мало. Тип int вмещает 4 миллиарда разных адресов. Компьютеров были тысячи на весь мир. Им показалось, что так будет вечно. Можно было на ip-адрес дать long, 8 байтов, тогда бы мы до скончания веков их не потратили. А потом Интернет начал расти. И рос все 1990-е и 2000-е годы, до миллиарда устройств на планету. А сейчас их куда больше миллиарда. А будет больше, это Интернет вещей, здесь каждая авторучка будет иметь выход в Сеть. Адреса кончились. Пришлось в экстренном порядке вводить протокол ipv6, а это долго, дорого, попробуй миллиард устройств смени. А среди них есть и древние, родом из 1990-х годов, и серьёзные, и критичные. Атомные станции к Интернету не подключены, а ты поди вспомни, что у нас на Земле за 20 лет использовало протокол с int в качестве адреса, причём так, чтобы не забыть, не устроить конец света. Там городили этажи хаков, чтобы оттянуть конец диапазона. А был бы ip-адрес типа long - без проблем.
Ulan Bolotbek
В то время, когда создавался IP, int был ДВА байта, а long - ЧЕТЫРЕ. Так что именно в long для ip и использовали. О возможности использования int64 в то время вообще не задумывались.
Так что получилась у тебя сказочка, а не урок.
Так что получилась у тебя сказочка, а не урок.
Похожие вопросы
- Учу C++! Уже знаю: типы данных, циклы. условия, привидения и т. д учу 5дней. вот программа! Как норм за 5 дней?
- Что имеется ввиду под 4 байтами у типа данных int?(С++)
- Напишите пожалуйста функцию обмена значений двух переменных на си (не c++) для любого типа данных
- C++ весь код находится внутри int main(int argc, char* pszArgs[]) { }
- C# почему когда создаю тип данных byte - он его автоматически преобразовывает в тип int?
- C++. Типы данных. Создание типа данных.
- C++ Проверка правильности ввода данных.
- Программа должна определить тип введённых данных (int или float) Программа должна быть написана на С
- Как на C++ создать массив типа int из стольких элиментов, что бы значение бралось из перемнно count ?
- Вес может ли быть дробным числом? Какой тип данных использовать для этого int или float или double ?
Поэтому не лезу в те дебри)