Погромисты хелп с Double

avatar CloneBoiii~

514

21

CloneBoiii~

Пользователь

Регистрация: 03.11.2016

Сообщения: 630

Рейтинг: 374

CloneBoiii~

Регистрация: 03.11.2016

Сообщения: 630

Рейтинг: 374

img

Дан код величины типа Double. Преобразуйте его в число.


А) С07С08С000000000

Б) С0811В0000000000

Kristallo

Пользователь

Регистрация: 13.05.2016

Сообщения: 7770

Рейтинг: 3794

Kristallo

Регистрация: 13.05.2016

Сообщения: 7770

Рейтинг: 3794

img

ОМГ, кому это понадобилось?

Fillipok

Пользователь

Регистрация: 05.04.2013

Сообщения: 2242

Рейтинг: 882

Fillipok

Регистрация: 05.04.2013

Сообщения: 2242

Рейтинг: 882

Почитай стандарт IEEE 754 или открой онлайн конвертер, если прямо так нужно. Правда, я не уверен, что я double precision такой есть. Можно еще прямо в каком-нибудь языке это преобразовать

CloneBoiii~

Пользователь

Регистрация: 03.11.2016

Сообщения: 630

Рейтинг: 374

CloneBoiii~

Регистрация: 03.11.2016

Сообщения: 630

Рейтинг: 374

img
Fillipok сказал(а):

открой онлайн конвертер

Нажмите, чтобы раскрыть...

не могу найти такой


Kristallo сказал(а):

ОМГ, кому это понадобилось?

Нажмите, чтобы раскрыть...

типа дз по информатике)0

denton

Пользователь

Регистрация: 31.10.2017

Сообщения: 21954

Рейтинг: 7023

Нарушения: 1000

denton

Регистрация: 31.10.2017

Сообщения: 21954

Рейтинг: 7023

Нарушения: 1000

img

6am6p

Пользователь

Регистрация: 01.08.2013

Сообщения: 148

Рейтинг: 100

6am6p

Регистрация: 01.08.2013

Сообщения: 148

Рейтинг: 100

Суть в том что дабл храниться как знак, число и степень. И всё это лежит в видимо в 4 байтах (могу наврать не помню).

Соответвенно тебе нужно разобрать то что дали на 4 байта, после этого нагуглить структуру хранения double и выяснить

"знак , число и степень".

dist_

Пользователь

Регистрация: 12.03.2016

Сообщения: 1218

Рейтинг: 505

dist_

Регистрация: 12.03.2016

Сообщения: 1218

Рейтинг: 505

да это не нужно мантиссф пофигиссы.


берешь два инта, потом кастуешь указатель в дабл и вуаля

6am6p

Пользователь

Регистрация: 01.08.2013

Сообщения: 148

Рейтинг: 100

6am6p

Регистрация: 01.08.2013

Сообщения: 148

Рейтинг: 100

dist_ сказал(а):

да это не нужно мантиссф пофигиссы.


берешь два инта, потом кастуешь указатель в дабл и вуаля

Нажмите, чтобы раскрыть...

Ну типа рабочий варик, да. Указатель на массив из 2 интов наверное можно попробовать кастануть в указатель на дабл.

CloneBoiii~

Пользователь

Регистрация: 03.11.2016

Сообщения: 630

Рейтинг: 374

CloneBoiii~

Регистрация: 03.11.2016

Сообщения: 630

Рейтинг: 374

img
dist_ сказал(а):

да это не нужно мантиссф пофигиссы.


берешь два инта, потом кастуешь указатель в дабл и вуаля

Нажмите, чтобы раскрыть...

можно по-русски?))


короче, я забил, пацаны)

Fillipok

Пользователь

Регистрация: 05.04.2013

Сообщения: 2242

Рейтинг: 882

Fillipok

Регистрация: 05.04.2013

Сообщения: 2242

Рейтинг: 882

Короче суть в том, что первый бит это знак. Следующие 11 байт это экспонента. Дальше мантисса. В числе биты идут от старшего к меньшему. Смотришь чему равна экспонента(e) и это 2 ^ (e - 1023) - экспонента. Дальше считаешь мантиссу. Нужно учесть, что старший разряд отвечает за 1/2. И итоговое число равно (M + 1) * 2 * (e - 1023) * sign. Там при e = 0 особый случай, но тут его вроде нет

pyles

Пользователь

Регистрация: 23.06.2013

Сообщения: 19830

Рейтинг: 9938

pyles

Регистрация: 23.06.2013

Сообщения: 19830

Рейтинг: 9938

Может ты спутал шеснадцатиричное число с типом переменной?

Как я понимаю у каждого типа есть размер в битах.

В шеснадцатиричное системе каждый символ - 4 бита.

Тебе надо преобразовать последовательность битов в переменную.

Это зависит от яп, какая для этого есть функция


CloneBoiii~ сказал(а):

можно по-русски?))


короче, я забил, пацаны)

Нажмите, чтобы раскрыть...

Лучше скинь оригинал задания, чтобы было понятно чё от тебя хотят

Master M

Пользователь

Регистрация: 03.02.2016

Сообщения: 1865

Рейтинг: 2340

Master M

Регистрация: 03.02.2016

Сообщения: 1865

Рейтинг: 2340

что за обезьяны на программистах пошли....жесть

Дай нормальное условие - какая архитектура/язык

Как минимум по этому вижу, что дабл стандартно занимает 8 байт - 16 тетрад(одно значение в 16 коде)


CloneBoiii~

Пользователь

Регистрация: 03.11.2016

Сообщения: 630

Рейтинг: 374

CloneBoiii~

Регистрация: 03.11.2016

Сообщения: 630

Рейтинг: 374

img

нужно эти числа из дабла перевести в десятичные числа

dist_

Пользователь

Регистрация: 12.03.2016

Сообщения: 1218

Рейтинг: 505

dist_

Регистрация: 12.03.2016

Сообщения: 1218

Рейтинг: 505

CloneBoiii~ сказал(а):

можно по-русски?))


короче, я забил, пацаны)

Нажмите, чтобы раскрыть...

ну там

#include

int main()
{
int x[2]={0, 0xC07C08C0};
double d = *(double*)&x[0];
printf("%lf", d);
return 0;
}

Master M

Пользователь

Регистрация: 03.02.2016

Сообщения: 1865

Рейтинг: 2340

Master M

Регистрация: 03.02.2016

Сообщения: 1865

Рейтинг: 2340

Fillipok сказал(а):

Короче суть в том, что первый бит это знак. Следующие 11 байт это экспонента. Дальше мантисса. В числе биты идут от старшего к меньшему. Смотришь чему равна экспонента(e) и это 2 ^ (e - 1023) - экспонента. Дальше считаешь мантиссу. Нужно учесть, что старший разряд отвечает за 1/2. И итоговое число равно (M + 1) * 2 * (e - 1023) * sign. Там при e = 0 особый случай, но тут его вроде нет

Нажмите, чтобы раскрыть...

что за бред, 11 байтroflanFacepalm.png . Что ты несешь...Сам дабл максимум 8 байт - 64 бита, длина порядка задается в разных архитектурах по разному


Алгоритм для ТСа, все шо помню с 1 курса:

1)разбивай на 64 бита это число

2)смотри на знак(1 - это знак мантисы, 2 - знак порядка), если отрицательный - делай инверсию + 1 в мл. р

3)выделяй порядок(хз сколько точно там битов, повторюсь - по разному)

переводи с двоичного в десятичный мантису и порядок


Fillipok

Пользователь

Регистрация: 05.04.2013

Сообщения: 2242

Рейтинг: 882

Fillipok

Регистрация: 05.04.2013

Сообщения: 2242

Рейтинг: 882

Master M сказал(а):

что за бред, 11 байтroflanFacepalm.png . Что ты несешь...Сам дабл максимум 8 байт - 64 бита, длина порядка задается в разных архитектурах по разному


Алгоритм для ТСа, все шо помню с 1 курса:

1)разбивай на 64 бита это число

2)смотри на знак(1 - это знак мантисы, 2 - знак порядка), если отрицательный - делай инверсию + 1 в мл. р

3)выделяй порядок(хз сколько точно там битов, повторюсь - по разному)

переводи с двоичного в десятичный мантису и порядок


Нажмите, чтобы раскрыть...

11 бит, очевидно же, что оговорился) Но для тебя видимо это невозможно понять, извини. И как бы вопрос в том, где ты там инверсию нашел. + инверсия определена в стандарте для integer. А для double можешь чекнуть как все работает в стандарте. Там просто умножается на (-1) ^ sign

Benedict Cumberbatch

Пользователь

Регистрация: 19.06.2018

Сообщения: 299

Рейтинг: 152

Нарушения: 1000

Benedict Cumberbatch

Регистрация: 19.06.2018

Сообщения: 299

Рейтинг: 152

Нарушения: 1000

Master M сказал(а):

что за обезьяны на программистах пошли....жесть

Дай нормальное условие - какая архитектура/язык

Как минимум по этому вижу, что дабл стандартно занимает 8 байт - 16 тетрад(одно значение в 16 коде)


Нажмите, чтобы раскрыть...

расскажешь, когда дабл занимает не 8 байт?

Грех Лисы

Пользователь

Регистрация: 20.10.2018

Сообщения: 37

Рейтинг: 15

Нарушения: 1000

Грех Лисы

Регистрация: 20.10.2018

Сообщения: 37

Рейтинг: 15

Нарушения: 1000

Может быть тебе ещё и писю полизать?

Benedict Cumberbatch

Пользователь

Регистрация: 19.06.2018

Сообщения: 299

Рейтинг: 152

Нарушения: 1000

Benedict Cumberbatch

Регистрация: 19.06.2018

Сообщения: 299

Рейтинг: 152

Нарушения: 1000

Master M сказал(а):

3)выделяй порядок(хз сколько точно там битов, повторюсь - по разному)

Нажмите, чтобы раскрыть...

нет, не по разному. Понятие double числа - не относистя к языку, язык всего лишь или предоставляет тип, удовлетворящий условиям числа double, или нет, это информатика в целом


Просто для ознакомления о чем я говорю :https://en.wikipedia.org/wiki/IEEE_754

xinstime

Пользователь

Регистрация: 20.04.2018

Сообщения: 1743

Рейтинг: 737

Нарушения: 1000

xinstime

Регистрация: 20.04.2018

Сообщения: 1743

Рейтинг: 737

Нарушения: 1000

це долго сам преобразовывай

Master M

Пользователь

Регистрация: 03.02.2016

Сообщения: 1865

Рейтинг: 2340

Master M

Регистрация: 03.02.2016

Сообщения: 1865

Рейтинг: 2340

Benedict Cumberbatch сказал(а):

расскажешь, когда дабл занимает не 8 байт?

Нажмите, чтобы раскрыть...

да ты шо? qword в зависимости от архитектуры занимает разное к-во памяти(привет старым архитектурам), молчу про всякие реконфигурованные или специальные системы, где вообще каждый задает свои правила

А ну я возьму 2 байтное число и скажу, что оно тип ординарной точности(dword)...
Это всего лишь тривиальное название, которон не имеет константных значений в разных средах инжениринга компуктера

Benedict Cumberbatch

Пользователь

Регистрация: 19.06.2018

Сообщения: 299

Рейтинг: 152

Нарушения: 1000

Benedict Cumberbatch

Регистрация: 19.06.2018

Сообщения: 299

Рейтинг: 152

Нарушения: 1000

Master M сказал(а):

да ты шо? qword в зависимости от архитектуры занимает разное к-во памяти(привет старым архитектурам), молчу про всякие реконфигурованные или специальные системы, где вообще каждый задает свои правила

А ну я возьму 2 байтное число и скажу, что оно тип ординарной точности(dword)...
Это всего лишь тривиальное название, которон не имеет константных значений в разных средах инжениринга компуктера

Нажмите, чтобы раскрыть...

????????
ты читал, что я писал? double - это стандарт, мне пофиг сколько твои qword и dword занимают памяти