Помогите пожалуйста с задачей по информатике
1. "-29,611"
2. "49A6C000"
желательно с решением
1. "-29,611"
2. "49A6C000"
желательно с решением
Делаешь переменную-указатель нужного вещественного типа, присваиваешь ей значение.
Делаешь указатель на битовый массив соотв. размера.
Приравниваешь указатель адресу переменной.
Выводишь значения массива в шестнадцатиричном виде.
На паскале - как-то так:
type TRealArray=packed array [1..6] of byte;
var r:^real;
a:^TRealArray;
j:integer;
begin
new(r);
r^:=-29.611;
a:=r;
for j:=1 to 6 do write(IntToHex(a^[j]);
end.
IntToHex надо написать отдельно, встроенной функции в классич. паскале нет.
"желательно с решением" - не наглейте. Почитайте что-нибудь самостоятельно, увидите, что полностью решение здесь приводить - места не хватит. Проще написать соответствующие программы. Для двоичного представления у меня есть написанные программы, шестнадцатеричное представление - извращение, хотя с ним, может быть проще - достаточно просмотреть запись числа (в компьютерном представлении, конечно, не просто "-29.611") через любой hex-редактор, А обратная опреацию (задача 2) - еще проще: нужно опять-таки в hex-редакторе записать 4 байта - перевести 4 двузначных шестнадцатеричных числа (49, A6, C0 и 00) в десятичные и набрать их последовательно как символы с такими ASCII-кодами - зажав Alt; а затем считать число как тип float (какой-нибудь функцией типа fscanf из Си) .
Не забываем, что байты в записи float расположены "задом наперед".
http://www.intuit.ru/department/pl/plintro/6/6.html
Если что - пишите на почту, но учтите, помочь - помогу, делать за Вас - не буду.
На Си все проще - там есть тип данных Union - Объединение - объявление разных типов данных в одной области памяти - т. е. можно записать как float и прочитать как int, например.