Что означают типы данных signed и unsigned

Рейтинг: 0Ответов: 1Опубликовано: 25.08.2023

читаю книгу и тут есть signed char и unsigned char вроде что-то пишут про различный объем памяти, но я все равно не понимаю что это и как этим пользоваться.

Ответы

▲ 3Принят

Если коротко, то это значит знаковый или беззнаковый тип. Само понятие берется из реализации хранения значения в памяти. на вашем примере signed char/unsigned char - занимают в памяти 1 байт, т.е. 8 бит и соответственно минимальное значение 0, и максимальное значение - 2^8-1=255

|1|1|1|1|1|1|1|1|

Но если вам нужны отрицательные числа, то в этом байте придется выделить один бит, указывающий знак числа (+/-)

|0|1|1|1|1|1|1|1|
 ^
 Знак

И соответственно на само значени у вас остается 7бит, т.е. 2^7-1 = 127, и диапазон значений [-128:127]

Дополнительно обратите внимание на особенности переполнения знаковых типов - они могут менять знак (при перпеполении единица заедет в знаковый разряд

signed char c=127; // 127- 01111111
c++; //  10000000 = , или -128