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

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

Вопрос:

Согласно 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)

Оцените статью
Добавить комментарий