Answer:
See explaination code
Explanation:
#include<iostream>
#include<math.h>
using namespace std;
typedef union {
float number;
struct
{
// Order is important.
// Here the members of the union data structure
// use the same memory (32 bits).
// The ordering is taken
// from the LSB to the MSB.
unsigned int mantissa : 23;
unsigned int exponent : 8;
unsigned int sign : 1;
} Raw;
} MyFloat;
void printBinary(int n, int i)
{
// Prints the binary representation
// of a number n up to i-bits.
int k;
for (k = i - 1; k >= 0; k--) {
if ((n >> k) & 1)
cout << "1";
else
cout << "0";
}
}
void decToHex(int n){
// char array to store hexadecimal number
char hexaDeciNum[100];
// counter for hexadecimal number array
int i = 0;
while(n!=0)
{
// temporary variable to store remainder
int temp = 0;
// storing remainder in temp variable.
temp = n % 16;
// check if temp < 10
if(temp < 10)
{
hexaDeciNum[i] = temp + 48;
i++;
}
else
{
hexaDeciNum[i] = temp + 55;
i++;
}
n = n/16;
}
// printing hexadecimal number array in reverse order
for(int j=i-1; j>=0; j--)
cout << hexaDeciNum[j];
}
void floatBinary(float f){
long double binaryTotal, binaryFrac = 0.0, frac, fracFractor = 0.1;
long int integer, binaryInt = 0;
long int p = 0, rem, temp;
//separate the integer part from the input floating number
integer = (int)f;
//separate the fractional part from the input floating number
frac = f - integer;
//loop to convert integer part to binary
while (integer != 0) {
rem = integer % 2;
binaryInt = binaryInt + rem *pow(10, p);
integer = integer / 2;
p++;
}
//loop to convert fractional part to binary
while (frac != 0) {
frac = frac * 2;
temp = frac;
binaryFrac = binaryFrac + fracFractor * temp;
if (temp == 1)
frac = frac - temp;
fracFractor = fracFractor / 10;
}
cout << binaryInt + binaryFrac;
}
int findDecimal(float number){
int nfloor = number;
float nfloat = number - nfloor;
int nfloatfloor;
do {
nfloat *= 10;
nfloatfloor = nfloat;
} while (nfloat > nfloatfloor);
return nfloatfloor;
}
void first(float number){
if(number < 0)
cout << "SIGN BIT IS (1) SINCE NUMBER IS NEGATIVE" << endl;
else
cout << "SIGN BIT IS (0) SINCE NUMBER IS POSITIVE" << endl;
}
void second(float number){
cout << "INTEGER PART IN BASE-10:" << int(number) << " AND IN BINARY:";
printBinary(int(number),16);
cout << endl;
}
void third(float number){
cout << "DECIMAL PART IN BASE-10:" << findDecimal(number) << " AND IN BINARY:";
printBinary(findDecimal(number),16);
cout << endl;
}
void fourth(float number){
cout << "ENTERED NUMBER IN BASE-10:" << number << " AND IN BINARY:";
floatBinary(number);
cout << endl;
}
void fifth(MyFloat myfloat){
cout << "MANTISA IN BINARY:";
printBinary(myfloat.Raw.mantissa,32);
}
void sixth(MyFloat myfloat){
cout << "EXPONENT IN BASE-10:" << myfloat.Raw.exponent << " AND IN BINARY:";
printBinary(myfloat.Raw.exponent,8);
cout << endl;
}
void seventh(MyFloat myfloat){
cout << myfloat.Raw.sign << " | ";
printBinary(myfloat.Raw.exponent,8);
cout << " | ";
printBinary(myfloat.Raw.mantissa,32);
cout << endl;
}
void eigth(MyFloat myfloat){
cout << myfloat.Raw.sign << " | ";
decToHex(myfloat.Raw.exponent);
cout << " | ";
decToHex(myfloat.Raw.mantissa);
cout << endl;
}
int main(){
float number;
cout << "PLEASE ENTER A NUMBER TO DISPLAY THE IEEE 754 FLOATING POINT OPTIONS" << endl;
cin >> number;
MyFloat myfloat;
myfloat.number = number;
cout << "PLEASE CHOOSE ONE OF THE FOLLOWING OPERATIONS" << endl;
cout << " 1. DISPLAY THE SIGN BIT VALUE" << endl;
cout << " 2. DISPLAY THE INTEER PART IN BOTH BASE-10 AND CINARY FORMATS" << endl;
cout << " 3. DISPLAY THE DECIMAL PART IN BOTH BASE-10 AND BINARY FORMATS" << endl;
cout << " 4. DISPLAY THE NUMBER ENTERED IN BOTH BASE-10 AND BINARY FORMATS" << endl;
cout << " 5. DISPLAY THE MANTISA IN BINARY FORMATS" << endl;
cout << " 6. DISPLAY THE EXPONENT IN BORH BASEE-10 AND BINARY FORMATS" << endl;
cout << " 7. DISPLAY THE IEEE 754 SINGLE PRECISION BINARY LAYOUT" << endl;
cout << " 8. DISPLAY THE IEEE 754 SINGLE PRECISION BINARY LAYOUT" << endl;
int choice;
cin >> choice;
switch(choice){
case 1:first(number);
break;
case 2:second(number);
break;
case 3:third(number);
break;
case 4:fourth(number);
break;
case 5:fifth(myfloat);
break;
case 6:sixth(myfloat);
break;
case 7:seventh(myfloat);
break;
case 8:eigth(myfloat);
break;
default:cout << "ENTER VALID CHOICE" << endl;
}
}
Refer to attachment please for onscreen look.