Closed and-se closed 6 years ago
@and-se Fixed
Нет, я так и не понял, как хранится int на памяти. Считайте, что читатель комментариев вообще ничего не понимает во всех этих словах "дополненный код" "обратный порядок байт". Он знает, как перевести из десятичной системы счисления в двоичную и обратно. Всё. Вот и объясните ему, как же это устроено в компьютере. Он ведь чует, что почти также, но ведь не совсем так. Объясните недостающие понятия и на конкретных примерах втолкуйте, как "по-компьютерному" хранится целое число в памяти. Пример нужны такие:
Ещё Ваши побитовые представления на экране вводят в заблуждение - у Вас же другой порядок байт на самом деле. Либо выводите реальное положение дел, либо объясните в комментариях, почему выводится так, как это происходит сейчас.
Ещё заметили ли Вы некоторую странность: Num -1023 in memory: 11111111111111111111110000000001 Ну хорошо, дополненный код. Давайте его инвертируем: 00000000000000000000001111111110 эм, это точно 1023?
@and-se Дополненный, а не обратный. Перед тем как инвертировать необходимо отнять единицу
@and-se Fixed
Во-вторых, из вывода на моей машине очевидно, что числа на моём компьютере хранятся в т.н. обратном порядке. То есть наименьший бит числа находится в ячейке с меньшим адресом
Нет, про биты мы ничего не знаем. Вот про порядок байт - да, можем сделать вывод, что младшие байты (мЕньшие цифры числа) стоят в начале - это порядок байт little-endian.
Про хранение int в памяти Нет вывода - как же всё-таки хранится значение типа int (знаковое) в памяти?
Вы пишете, что знак кодируется первым битом, что-то выводите на экран. Так как мне взять и конкретное число 15 разложить по памяти? А -15? Опишите сам способ кодирования этих чисел. Из Вашего комментария я так и не понял, как это работает. Подозреваю, что в основе идеи лежит двоичное представление числа, но может есть что-то ещё? Что?