Question: I need a non-leaf function in a MIPS program that determines if an integer(read in as a char) is negative and if so, uses existing

I need a non-leaf function in a MIPS program that determines if an integer(read in as a char) is negative and if so, uses existing function toBinary to convert the absolute value to 2's complement in a string. Should do the following:

I need a non-leaf function in a MIPS program that determines if

Below is the C equivalent of this program:

++++++++++++++++++++++++++++++++++ C Example Code +++++++++++++++++++++++++++++++++++++

#include

#include

// leaf function - convert decimal to binary in string

void toBinary(int num, char strNum[])

{

int i;

for(i = 7; i >= 0; i--){ // index 7 is the LSB (bit-0)

int rem = num & 0x01; // retrieve remainder

num = num >> 1; // shift right by 1 bit (== divide by 2)

strNum[i] = '0' + rem; // ascii '0' is decimal 48, '1' is 49

}

}

// non-leaf function convert decimal (negative) to 2s complement in string

void twosComplement(int num, char strNum[])

{

int i, absolute, carry;

absolute = abs(num);

toBinary(absolute, strNum); // call toBinary for absolute value (positive)

printf("absolute value = %s ", strNum);

// flip, complement

for(i = 7; i >=0; i--){

if(strNum[i] == '0')

strNum[i] = '1';

else

strNum[i] = '0';

}

printf("1's complement = %s ", strNum);

// add 1

for(i = 7, carry = 1; i >=0 && carry; i--){ // if carry is 0, stop!!

int sum = (strNum[i] - 48) + carry; // ascii '0' is decimal 48, '1' is 49

strNum[i] = '0' + (sum & 0x01); // logical and

carry = (sum >> 1) & 0x01; // shift right by 1 bit (divide by 2) & logical and

}

printf("2's complement = %s ", strNum);

}

int main()

{

char Binary[10] = "";

int num;

printf("Enter a number: ");

scanf("%d", &num);

if(num > 127 || num

{

printf("Out of Range for 8-bit singed Binary");

return 0;

}

if(num >= 0) // positive or 0

toBinary(num, Binary);

else // negative to two's complement

twosComplement(num, Binary);

printf("%d's 8-bit Binary Representation is %s ",num , Binary);

return 0;

}

o Write a non-leaf function to convert a negative integer number to 2's complement in string Two parameters: integer number, string array or pointer Get absolute value of the negative number Call a function that you implement from part I .Flip each binary bit of the string (do 1's complement): '0' f-> 1' -Add 1 to LSB Repeat adding a carry to higher bit

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!