Java

почему примитивные типы имеют определенный диапазон чисел?

К примеру byte -128 127 зачем нужно делать такое разделение
Почему бы просто не сделать один тип с бесконечным диапазоном?
можно, в некоторых языках так и делается - в питоне, например
прикол в том, что операции с этим типом придётся реализовывать программно, разбивая его как раз на куски по 1,2,4,8 байт, потому что только с такими процессор умеет проделывать операции
само собой разумеется, что продолжительность операции над таким числом как минимум линейно зависит от его длины
Vlad Naranov
Vlad Naranov
50 628
Лучший ответ
Сергей Литовченко Если так делается в питоне почему так не делается в java?
И что значит линейно зависит от его длины?
Как верно заметил Дед Мазай в комментариях, примитивные типы предназначены для хранения данных определенной длины. К тому же, бесконечная точность на конечном автомате, которым является компьютер, принципиально невозможна.
Современные процессоры не могут обрабатывать менее 4 (или даже 8) байт информации одновременно, поэтому особенной разницы в скорости между "короткими" и "длинными" целочисленными типами нет. Но иногда нужно использовать структуры - сложные типы с различными примитивными внутри. Часто это необходимо для обращения к API операционной системы. И вот там размер уже важен. Поэтому и было введено так много разных целых типов.
Что касается чисел с плавающей точкой - в процессоре для работы с ними существует специальный сопроцессор, ОЧЕНЬ сильно ускоряющий вычисления. Но он тоже работает с числами фиксированного размера. А если большая точность тебе не нужна - можно для вычислений использовать GPU, там вообще все летает.
Если подытожить - необходимость в различных типах данных обусловлена архитектурой компьютера и его операционных систем.
Потому что: хотим получить высокую скорость вычислений -- пихаем числа в регистры процессора, а они имеют ограниченную битность.
Ирисхан Нагиев
Ирисхан Нагиев
98 050
ндээ... программирование - это явно не твоё...