and-se / 1kurs-vesna-2018

0 stars 2 forks source link

Task 1 + - Zolotuhin #3

Closed and-se closed 6 years ago

and-se commented 6 years ago

Про хранение int в памяти Нет вывода - как же всё-таки хранится значение типа int (знаковое) в памяти?

Вы пишете, что знак кодируется первым битом, что-то выводите на экран. Так как мне взять и конкретное число 15 разложить по памяти? А -15? Опишите сам способ кодирования этих чисел. Из Вашего комментария я так и не понял, как это работает. Подозреваю, что в основе идеи лежит двоичное представление числа, но может есть что-то ещё? Что?

MrFang commented 6 years ago

@and-se Fixed

and-se commented 6 years ago

Нет, я так и не понял, как хранится int на памяти. Считайте, что читатель комментариев вообще ничего не понимает во всех этих словах "дополненный код" "обратный порядок байт". Он знает, как перевести из десятичной системы счисления в двоичную и обратно. Всё. Вот и объясните ему, как же это устроено в компьютере. Он ведь чует, что почти также, но ведь не совсем так. Объясните недостающие понятия и на конкретных примерах втолкуйте, как "по-компьютерному" хранится целое число в памяти. Пример нужны такие:

Ещё Ваши побитовые представления на экране вводят в заблуждение - у Вас же другой порядок байт на самом деле. Либо выводите реальное положение дел, либо объясните в комментариях, почему выводится так, как это происходит сейчас.

Ещё заметили ли Вы некоторую странность: Num -1023 in memory: 11111111111111111111110000000001 Ну хорошо, дополненный код. Давайте его инвертируем: 00000000000000000000001111111110 эм, это точно 1023?

MrFang commented 6 years ago

@and-se Дополненный, а не обратный. Перед тем как инвертировать необходимо отнять единицу

MrFang commented 6 years ago

@and-se Fixed

and-se commented 6 years ago

Во-вторых, из вывода на моей машине очевидно, что числа на моём компьютере хранятся в т.н. обратном порядке. То есть наименьший бит числа находится в ячейке с меньшим адресом

Нет, про биты мы ничего не знаем. Вот про порядок байт - да, можем сделать вывод, что младшие байты (мЕньшие цифры числа) стоят в начале - это порядок байт little-endian.