Вопрос:
Согласно docs.oracle.com:-
byte: Тип данных байта представляет собой 8-разрядное двухзначное целое число. Он имеет минимальное значение -128 и максимальное значение 127 (включительно). Тип данных байта может быть полезен для экономии памяти в больших массивах, где действительно важна экономия памяти. Они также могут использоваться вместо 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. Является ли он жестко закодированным где-то или есть некоторые технические особенности этого диапазона?
Мы ценим любые предложения.
Ответ №1
Это подписанный тип, то есть он все еще имеет диапазон 255 (как вы правильно рассчитали), но начинается с -128. Таким образом, половина диапазона ниже нуля, 1 возможное число равно = (ноль), а остальные 127 – выше 0.
Первый бит – это знак. (1 минус, 0 – плюс)
Ответ №2
Это потому, что первый бит используется для знака, поскольку тип данных подписан.
См. Http://en.wikipedia.org/wiki/Signed_number_representations
Поскольку нет никаких примитивных типов unsigned в Java (например, C или С#), обычно бросать его на больший тип, если вам нужно “переполнить” границы.
Ответ №3
Формула для расчета диапазона: -2 ^ (n -1) – (2 ^ (n -1) -1)
где n = нет. бит примитивного типа данных. Пример:
Для типа данных int n равно 32, в коротком типе данных n равно 16 и т.д.
Таким образом, диапазон int будет: -2 ^ (32 -1) до (2 ^ (32 -1) -1)
Используя ту же формулу, можно рассчитать диапазон байтов, короткий, плавающий и двойной.
Ответ №4
Последний бит, т.е. Число 8, мы пишем его 2 ^ 7, представляет собой знаковый бит, который решает отрицательный или положительный знак, поэтому он равен 2 ^ 0 +2 ^ 1 +2 ^ 2 +2 ^ 3 +2 ^ 4 [ CN00] ^ 5+ 2 ^ 6
Ответ №5
Формула для вычисления диапазона в Java
-2 (n -1) – +2 (n -1) -1
Где n – число бит (1 байт = 8 бит)
Таким образом, для диапазона типа байтов: -2 (8 -1) – +2 (8 -1) -1
или -2 (7) – +2 (7) -1
или -1 28 – +127
Ответ №6
это результат стандартного представления знаковых значений как двоичных чисел. Полное описание см. Http://en.wikipedia.org/wiki/Two%27s_complement.
-Rich
Ответ №7
Бит состоит из 0 и 1 сек. байт обычно состоит из 8 бит. Значения могут быть вычислены с использованием общей формулы, приведенной ниже,
no of values тип данных может иметь = 2^n(2 power n), где n не представляет бит. поэтому значение байтового типа данных = 2^8(ie 1 byte=8 bits), здесь n=8 байтов = 256
И он должен быть разделен равным по обе стороны от нуля (половина значений при отрицательном и половинном значении при положительном значении). Следовательно, диапазон для байта от -128 до 127.
Ответ №8
Диапазон типов данных, поэтому теперь мы узнали, как мы вычисляем диапазон целочисленных типов данных. Эта логика применима для всех целочисленных типов данных.
Полная информация о всех типах данных приведена ниже,
Значения типов данных типа S.NO
1 boolean 1 – true или false (1 или 0)
2 байт 8 -128 до 127. 256 (2 ^ 8)
3 коротких 16 -32, 768 до 32 767 65 536 (2 ^ 16)
4 int 32 -2 от 31 до (2 ^ 31) -1 2 ^ 32
5 длинный 64 См. ПРИМЕЧАНИЕ 2 ^ 64
6 float 32 См. ПРИМЕЧАНИЕ —
7 двойных 64 См. ПРИМЕЧАНИЕ —-
8 char 16 0 до 65 535 65 536 (2 ^ 16)