Вопрос задан 14.01.2020 в 16:25. Предмет Информатика. Спрашивает Донченко Лара.

В современной вычислительной технике информация хранится в виде последовательности байтов.

Существует два способа хранения последовательности: записывать байты от младшего к старшему (little-endian или остроконечный) или от старшего к младшему (big-endian или тупоконечный). Невнимательный программист перенес побайтово очень важное четырехбайтовое число с машины с типом хранения little-endian в машину с типом хранения big-endian. Очевидно, что на этой машине данный порядок байтов соответствует совсем другому числу. На машине с big-endian получилось число 3070822802. Определите, какое число было изначально. В ответе укажите одно целое число в десятичной системе счисления.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Волощук Ксения.
Пример решения с обьяснением
4277228478 закодировано таким порядком байт  0xFE 0xF1 0x53 0xBE
или
4277228478_10 = FEF153BE_16
чтоб перейти в другой порядок байт, надо их поставить в обратном порядке. Почему по 2 цифры? Потому что 1 байт = 8 бит = 2^8 = 256 =  от 0 до 255 или от 0 до FF в 16ричной
0xBE 0x53 0xF1 0xFE 
BE53F1FE_16 = 3 193 172 478_10

Старалась объяснить как можно яснее

Конкретно для этого задания
3070822802 = hex: B7 09 09 92
Hex(920909B7) = 2 450 065 847
Ответ 2 450 065 847






0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи нам необходимо разобраться, как происходит перестановка байтов при переносе числа из машины с типом хранения little-endian в машину с типом хранения big-endian.

Исходное число, записанное в машине с типом хранения little-endian, выглядит как последовательность байтов: [A, B, C, D]. При переносе в машину с типом хранения big-endian, эта последовательность байтов будет переставлена таким образом: [D, C, B, A].

В данной задаче нам дана переставленная последовательность байтов [D, C, B, A], которая соответствует числу 3070822802. Наша задача - определить исходное число [A, B, C, D].

Для этого мы можем применить обратный процесс перестановки байтов. То есть, нам нужно поменять местами первый и последний байты, а также второй и третий байты.

Таким образом, исходное число будет состоять из последовательности байтов [3070822802 % 256, 3070822802 / 256 % 256, 3070822802 / (256 * 256) % 256, 3070822802 / (256 * 256 * 256) % 256].

Вычислим значения каждого байта: - Первый байт: 3070822802 % 256 = 122 - Второй байт: 3070822802 / 256 % 256 = 183 - Третий байт: 3070822802 / (256 * 256) % 256 = 9 - Четвертый байт: 3070822802 / (256 * 256 * 256) % 256 = 0

Таким образом, исходное число будет состоять из последовательности байтов [0, 9, 183, 122]. Из этой последовательности байтов можно сформировать исходное число в десятичной системе счисления:

Исходное число = 0 * (256^3) + 9 * (256^2) + 183 * 256 + 122 = 154973760

Таким образом, исходное число, записанное в машине с типом хранения little-endian, равно 154973760.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос