В C, это правда, что:Какова связь между представлением памяти и значением переменной в C?
[8-bit] signed char: -127 to 127
[8-bit] unsigned char: 0 to 255
Но что же на самом деле происходит в памяти? Является ли подписанный символ представленным в двух дополнениях и неподписанным символом, представленным без какого-либо конкретного представления (т. Е. Последовательность из 11111111)?
Как исполняемый файл отслеживает тип переменной, которую он считывает, чтобы выяснить, следует ли понимать значение в регистре CPU как дополнение или нет? Есть ли некоторые метаданные, которые связывают имя переменной с ее типом?
Спасибо!
Почему бы не прочитать единственный [авторитетный ресурс] (http://port70.net/~nsz/c/c11/n1570.html#6.2.6)? Он должен ответить на все ваши вопросы. И вы можете захотеть повторно узнать о языках _statically_ vs. _dynamically_ types. – Olaf
Это должно быть полезно: http://stackoverflow.com/questions/7681024/negative-numbers-are-stored-as-2s-complement-in-memory-how-does-the-cpu-know-i – aniliitb10
Обычно сначала бит используется для знака. '0b01111111' - 127,' 0b10000000' - -128 – EvgeniyZh