Так что я не собираюсь делать всю работу за вас, потому что это звучит как домашнее задание.Но я вас начну, и вы можете заполнить пробелы.Таким образом, в c ++ есть удобный тип данных, который называется объединением, с его помощью вы можете иметь несколько типов данных, занимающих одно и то же место.Это очень полезно, если, скажем, вы хотите увидеть битовое представление числа с плавающей запятой.Следующий код выведет двоичное представление числа с плавающей запятой:
#include <iostream>
using namespace std;
union b{
float flo;
int integ;
};
int main(){
b thing;
thing.flo=-40.1;
for(int i=31;i>=0;i--){
if((thing.integ & (1 << i)))
cout << 1;
else
cout << 0;
}
cout << endl;
}
Все, что вам остается сделать - это извлечь мантиссу и экспоненту.Вы можете запустить процедуру один раз, чтобы сгенерировать мантиссу, и снова, чтобы сгенерировать показатель степени.Я дам краткое объяснение того, как сделать и то, и другое, на что следует обратить внимание.
При создании мантиссы помните, что IEEE использует скрытый 1 с зарезервированным кодом для нуля, поэтому всегда будетдополнительный, которого нет в битовом представлении.По сути, вы проверите бит печати знака - или + в зависимости от этого, затем 1. затем перейдите к мантиссе и напечатайте то, что следует.Затем вы вернетесь к 23-30 битам, вы хотите преобразовать его в целое число, чтобы сделать это, умножив каждый бит на 2 ^ i (23 бита - 0, 24 бита - 1 и т. Д.), А затемхочу вычесть смещение из int.Затем, используя ранее набросанный метод вывода двоичного представления показателя степени, я бы не стал выводить, пока вы не нажмете 1. Надеюсь, это поможет.