Как рассчитать диапазон примитивных типов данных?

Согласно docs.oracle.com: -

byte: тип данных byte представляет собой 8-разрядное целое число в дополнении до двух со знаком. Он имеет минимальное значение -128 и максимальное значение 127 (включительно). Тип данных byte может быть полезен для экономии памяти в больших массивах, где экономия памяти действительно имеет значение. Их также можно использовать вместо int, когда их ограничения помогают прояснить ваш код; тот факт, что диапазон переменных ограничен, может служить формой документации.

Байт — 8 бит
2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0

128 64 32 16 8 4 2 1)

Складывая все эти числа, мы получаем в общей сложности 255. Тогда как рассчитывается диапазон от -128 до 127? Это где-то жестко закодировано или в этом диапазоне есть еще какие-то технические детали?

Мы ценим любые предложения.


person Ankit    schedule 07.06.2013    source источник


Ответы (9)


Рассчитаем диапазон для 1 байта

  1. 1 бит может принимать 0 или 1
  2. 1 байт = 8 бит
  3. Первый бит используется как знак (- или +)
  4. тогда оставшиеся биты равны 7
  5. поэтому мы можем записать 2 ^ 7 = 128 различных чисел для одного знака.
  6. мы получаем 0 как положительный знак. тогда у нас есть 128 чисел для отрицательной стороны, 127 чисел для положительной стороны и 0 (ноль)
  7. поэтому диапазон составляет от -128 до 127, включая 0
person Jayani Sumudini    schedule 12.01.2020
comment
Хорошее объяснение - person Ganesh Babu; 11.06.2020

Это знаковый тип, то есть он по-прежнему имеет диапазон 255 (как вы правильно подсчитали), но начинается с -128. Таким образом, половина диапазона меньше нуля, 1 возможное число равно (ноль), а остальные 127 больше 0.

Первый бит - это знак. (1 - минус, 0 - плюс)

person LuigiEdlCarno    schedule 07.06.2013

Формула для расчета диапазона: от -2^(n-1) до (2^(n-1)-1)

где n = нет. битов примитивного типа данных. Пример:

Для типа данных int n равно 32, для короткого типа данных n равно 16 и т. д.

Итак, диапазон int будет: от -2^(32-1) до (2^(32-1)-1)

Используя ту же формулу, можно рассчитать диапазон byte, short, float и double.

person Community    schedule 16.11.2017

Это потому, что первый бит используется для знака, так как тип данных является знаковым.

См. http://en.wikipedia.org/wiki/Signed_number_representations.

Поскольку в Java нет примитивных типов unsigned (например, C или C#), обычно приводятся к более крупному типу, если вам нужно «переполнить» границы.

person Agustin Meriles    schedule 07.06.2013

Последний бит, т.е. число 8, которое мы записываем как 2^7, является битом знака, который определяет отрицательный или положительный знак, поэтому это 2^0 +2^1 +2^2 +2^3 +2^4 +2^5+ 2^6

person Manpreet Saini    schedule 13.04.2017

Формула для расчета диапазона в Java
от -2(n-1) до +2(n-1)-1
Где n — количество бит (1 байт = 8 бит)

Таким образом, для диапазона типов байтов будет: от -2(8-1) до +2(8-1)-1
или -2 (7) до +2(7)-1
или от -128 до +127

person Cute Pari    schedule 30.05.2018

это результат стандартного представления значений со знаком в виде двоичных чисел. Полное описание см. на http://en.wikipedia.org/wiki/Two%27s_complement.

-Богатый

person rich    schedule 07.06.2013

Бит состоит из 0 и 1. байт обычно состоит из 8 бит, поэтому значения можно рассчитать по общей формуле, приведенной ниже:

тип данных значений не может иметь = 2^n(2 power n), где n представляет количество битов. поэтому значение байтового типа данных = 2^8(i.e 1 byte=8 bits), здесь n=8 значение байта = 256

И он должен быть равным по обе стороны от нуля (половина значений при отрицательном и половинном значении при положительном). Следовательно, диапазон для байта составляет от -128 до 127.

person Suganth S    schedule 14.08.2017

Диапазон типов данных, поэтому теперь мы узнали, как мы вычисляем диапазон целочисленных типов данных. Эта логика применима для всех целочисленных типов данных.

Подробная информация обо всех типах данных приведена ниже.

S.NO Тип данных Биты Диапазоны значений

1 логическое значение 1 — истина или ложь (1 или 0)

2 байта 8 от -128 до 127. 256(2^8)

3 коротких 16 от -32 768 до 32 767 65 536 (2^16)

4 от 32 от -2^31 до (2^31)-1 2^32

5 длинных 64 См. ПРИМЕЧАНИЕ 2^64

6 поплавок 32 См. ПРИМЕЧАНИЕ ———

7 двойной 64 См. ПРИМЕЧАНИЕ ———-

8 символов 16 от 0 до 65 535 65 536 (2^16)

person rahul    schedule 19.11.2013