Question: The structure of the program has been established. Only need to implement the following functions: _______________________________________ #include #include #include using namespace std; int binary_to_decimal_signed(string s);

The structure of the program has been established. Only need to implement the following functions:  _______________________________________ #include  #include  #include  using namespace std; int binary_to_decimal_signed(string s); // precondition: s is a string that consists of only 0s and 1s // postcondition: the decimal integer that is represented by s in two's complement string signed_extension(string s); // precondition: s is a string that consists of only 0s and 1s that is at most 16 bits // postcondition: a 16 bit string has been returned as signed extension of s. For instane, if s = "0101" then // return value will be "00000000000000000101" total 12 0s are added in front of s string decimal_to_binary_signed(int n); // precondition: n is an integer // postcondition: ns two's complement binary representation is returned as a string of 0s and 1s string add_binaries_signed(string b1, string b2); // precondition: b1 and b2 are strings that consists of 0s and 1s at most 32 bits, i.e. // b1 and b2 are two's complement binary representations of two integers. "0" is 0, "1" is still postive 1 // However, "10" will be consider as "1111111111111110" as -2 // postcondition: the sum of b1 and b2 is returned as a 32 bits two's complement reprentation. // For instance, if b1 = 1101 (-3), b2 = 01 (+1), then the return value is 1111111111111110 (-2) string twos_complement(string s); // precondition: s is a string that consists of only 0s and 1s // postcondition: two's complement of s is returned as an 16 bits binary integer. For instance, if s = "1101", then // return value will be "1111111111111101" int binary_to_decimal(string s); // precondition: s is a string that consists of only 0s and 1s // postcondition: the positive decimal integer that is represented by s string decimal_to_binary(int n); // precondition: n is a positive integer // postcondition: ns binary representation is returned as a string of 0s and 1s string add_binaries(string b1, string b2); // precondition: b1 and b2 are strings that consists of 0s and 1s, i.e. // b1 and b2 are binary representations of two positive integers // postcondition: the sum of b1 and b2 is returned. For instance, // if b1 = 11, b2 = 01, then the return value is 100 void menu(); // display the menu. Student shall not modify this function int grade(); // returns an integer that represents the students grade of this projects. // Student shall NOT modify bool is_binary(string b); // returns true if the given string s consists of only 0s and 1s; false otherwise bool test_binary_to_decimal_signed(); // returns true if the students implementation of binary_to_decimal function // is correct; false otherwise. Student shall not modify this function bool test_decimal_to_binary_signed(); // returns true if the students implementation of decimal_to_binary function is correct; false otherwise. Student shall not modify this function bool test_add_binaries_signed(); // which returns true if the students implementation of add_binaries function // is correct; false otherwise. Student shall not modify this function bool test_signed_extension(); // return true if the student's implementation of sign_extension function // is correct; false otherwise. Student shall not modify this function bool test_twos_complement(); // return true if the student's implementation of twos_complement function // is correct; false otherwise. Student shall not modify this function int main() { int choice; string b1, b2; int x, score; do{ // display menu menu(); cout > choice; // based on choice to perform tasks switch(choice){ case 1: cout > b1; if(!is_binary(b1)) cout > x; cout > b1 >> b2; if(!is_binary(b1) || !is_binary(b2)) cout > b1; cout > b1; cout  0){ result = string(1, (char) (n%2 + 48)) + result; // add last digit of n in front of the result n = n/2; } return result; } string add_binaries(string b1, string b2){ // you implement this assert(is_binary(b1) && is_binary(b2)); string result = ""; int carry = 0; int i1 = (int) b1.length()-1; int i2 = (int) b2.length()-1; while(i1 >= 0 || i2 >= 0) { int d1 = 0, d2 = 0; if(i1 >= 0) d1 = b1[i1] - 48; if(i2 >= 0) d2 = b2[i2] - 48; int sum = carry + d1 + d2; // signle digit sum carry = sum / 2; // carry is 1 if sum is 2 or 3; 0 otherwise result = string(1, (char) (48+sum%2)) + result; i1--; i2--; } if(carry != 0) result = "1" + result; return result; } void menu() { cout  

_________________________

EXAMPLE OF OUTPUT:

The structure of the program has been established. Only need to implement

Menu * 1. Binary to Deci * 2. Decinal to Binary 3. Add two Binaries * * 4. Signed extension *5. Two's complement * 6. Grade * 7. Quit Enter your choice: 1 Enter a binary string: 1001101 Its decimal value is: -51 (the two's complement of 1001101 is 0110011 which is positive 51. So 1001101 is -51) Menu * 1. Binary to Deci * 2. Decinal to Binary * 3. Add two Binaries * 4. Signed extension 5. Two's complement * 6. Grade * 7. Quit Enter your choice: 2 Enter an integer: -51 Its binary representation is: 1111111111001101 (51 is 0110011. So -51 is 1001101. Use sign

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!