Как рассчитать диапазон типа данных, например, int - PullRequest
0 голосов
/ 10 июля 2020

Я хочу знать, почему в формуле для вычисления диапазона любого типа данных ie2 ^ (n-1), почему это n-1, n - количество бит, занятых данным типом данных

Ответы [ 2 ]

2 голосов
/ 10 июля 2020

Предполагая, что тип беззнаковый, максимальное значение будет (2 n ) - 1, потому что существует 2 n значений, и одно из них равно нулю. 2 (n-1) - это значение только n: го бита - бит 1 равен 2 0 , бит 2 равен 2 1 и т. Д. .

То же самое для любой системы счисления - в десятичной системе n цифр могут представлять 10 n различных значений, при этом максимальное значение составляет 10 n - 1, а n: th di git «стоит» 10 (n-1) .

Например, наибольшее число с тремя десятичными цифрами - 999 (то есть 10 3 -1), а третье десятичное число di git - это «сотни di git», 10 2 .

1 голос
/ 10 июля 2020

Первое 2^(n-1) неверно, максимальное (беззнаковое) число, представленное типом данных:

max = 2^n - 1

Таким образом, для 8-битного типа данных максимальное представленное значение 255

2^n сообщает вам количество представленных чисел (256 для 8-битного примера), но поскольку вы хотите включить 0, диапазон равен 0 to 255, а не 1 to 256

...