Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Many functions below will refer to data type called byte. This is simply shorthand for an unsigned char. Other than string::length(), you may not use

Many functions below will refer to data type called "byte". This is simply shorthand for an "unsigned char". Other than string::length(), you may not use any STL functions. Instead, you must implement the needed functionality using logical and bitwise operations. I need help with making these 6 functions. I've attached my code below.

  • byte msb(byte) -- required

    This function returns the MSB (bit 7) of the given unsigned char shifted to the LSB position (bit 0).

  • bool overflow(byte, byte, byte) -- required

    This functions checks if the result of an addition has produced overflow. You may recall that this involves comparing the MSBs of the two operands and the result. Instead of first extracting the MSBs, you may apply the same bitwise operations to the three numbers and then extract the MSB of the result.

  • byte twoscomplement(byte) -- required

    This function returns two's complement of the input.

  • byte str2bin(string &) -- required

    Given a binary number as an ASCII string, this function computes and returns the corresponding unsigned char. Seek inspiration from Lab 1. Replace multiplication with bit-shifting and use bitwise OR instead of addition when setting a bit.

  • string bin2str(byte) -- required

    This function does the reverse of the str2bin function. That is, given an unsigned char, it computes and returns the corresponding ASCII string. Use bitwise operations to determine when and how to set a bit.

  • bool isBIN8(string &) -- required

    This function checks that the binary number considered is between 1 and 8 characters long and that each character is either 0 or 1. If either check fails, the function returns false. Otherwise, true.

  • bool isVALID(string &) -- required

    This function implements a Boolean expression for checking that the operation is a single character which is either a '+' or a '-'. If not, the function return false. Otherwise, true.

#include #include #include using namespace std;

typedef unsigned char byte;

byte msb(byte); bool overflow(byte, byte, byte); byte twoscomplement(byte);

byte str2bin(string &); string bin2str(byte); string bin2dec(byte);

bool isBIN8(string &); bool isVALID(string &);

int main(int argc, char *argv[]) { string sX, sY; string op;

cout << "X> "; cin >> sX; if (cin.eof()) return 1;

if (!isBIN8(sX)) { cout << "error: not 8-bit binary number "; return 1; }

cout << "Y> "; cin >> sY; if (cin.eof()) return 1;

if (!isBIN8(sY)) { cout << "error: not 8-bit binary number "; return 1; }

cout << "op> "; cin >> op; if (cin.eof())

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Security XI Status And Prospects

Authors: T.Y. Lin, Shelly Qian

1st Edition

0412820900, 978-0412820908

More Books

Students also viewed these Databases questions

Question

1. Describe the types of power that effective leaders employ

Answered: 1 week ago