| | |

Question: Write a C program to run on ocelot which will flip a single bit in a number entered by the user using the binary representation of the number. The user should input the original integer value between 1 and 1000 inclusive using a scanf. – Free Chegg Question Answer

Write a C program to run on ocelot which will flip a single bit in a number entered by the user using the binary representation of the number. The user should input the original integer value between 1 and 1000 inclusive using a scanf. Use an unsigned integer type. Output is to the screen. You must use only bitwise operators for this program. You can shift bits and or use the logical bitwise operators. For this assignment give the user directions asking them to enter the integer. Then ask the user which bit to flip. That can be a number between 0 and 31 each referring to the values 20 to 231. Prompt the user for what should be entered each time. Be sure to validate all user input so the program cannot be crashed. You do not need to use getopt for this program since there are no command line arguments The source file should have your name & Panther ID, a description and it should have the affirmation of originality included in a comment at the top. Code should be nicely indented and commented. Create a simple Makefile to compile your program into an executable called bitflip. If the user enters a 1 as the initial value and a 0 for the bit to flip the result would be 0. If the user enters a 2 as the initial value and a 1 for the bit to flip the result would be 0. If the user enters a 10 as the initial value and a 1 for the bit to flip the result would be 8. Output should be easy to read. Test the program with the following commands: bitflip then enter 16 as the initial value and a 2 for the bit to flip bitflip then enter 16 as the initial value and a 1 for the bit to flip

Transcribed text From Image: 

Expert Chegg Question Answer:

free chegg question answer
Smart Teacher From Answerie.com
Answer:

Answer


#include <stdio.h>

int main()

{

//declare the variables

int input, bit, result;

int choice;

char ch = ‘Y’;

//iterate a do-while loop

do

{

/*Read an integer value between 1 and 1000

Validate the input. Iterate the loop until user enter

correct input.

*/

do

{

printf(“Please enter an integer between 1 and 1000: “);

scanf(“%d”, &input);

if (input < 1 || input > 1000)

{

printf(“Invalid input.\n”);

}

} while (input < 1 || input > 1000);

/*prompt and read the input if user wants to clear or set a bit

Validate the input. Iterate the loop until user enter

correct input.

*/

do

{

printf(“\nDo you want to set or clear?\n1. Set\n2. Clear\nEnter your choice: “);

scanf(“%d”, &choice);

if (choice < 1 || choice > 2)

{

printf(“Invalid input.\n”);

}

} while (choice < 1 || choice > 2);

//if the user wants to set the bit.

if (choice == 1)

{

/*prompt and read the bit number to set

Validate the input. Iterate the loop until user enter

correct input.

*/

do

{

printf(“\nEnter the bit to set (0-31): “);

scanf(“%d”, &bit);

if (bit < 0 || bit > 31)

{

printf(“Invalid input.\n”);

}

} while (bit < 0 || bit > 31);

//using logical bitwise operators

//set the bit of the input number.

//Left shift 1 to bit number of times and perform bitwise OR (|)with input

result = (1 << bit) | input;

printf(“The decimal number before setting %d bit: %d\n”, bit, input);

printf(“The decimal number after setting %d bit: %d\n”, bit, result);

}

//if the user wants to clear the bit.

if (choice == 2)

{

/*prompt and read the bit number to set

Validate the input. Iterate the loop until user enter

correct input.

*/

do

{

printf(“\nEnter the bit to clear (0-31): “);

scanf(“%d”, &bit);

if (bit < 0 || bit > 31)

{

printf(“Invalid input.\n”);

}

} while (bit < 0 || bit > 31);

//using logical bitwise operators

//clear the bit of the input number.

//Left shift 1 to bit number of times, apply the compliment (~),

//and perform bitwise AND (&) with input.

result = input & (~(1 << bit));

printf(“The decimal number before clearing %d bit: %d\n”, bit, input);

printf(“The decimal number after clearing %d bit: %d\n”, bit, result);

}

//ask the user to repeat this process again

printf(“\nIf you want to repeat, press Y otherwise N: “);

scanf(” %c”, &ch);

printf(“\n”);

} while (ch == ‘Y’ || ch == ‘y’);

return 0;

}


Free Chegg Question Answer

Leave a Reply

Your email address will not be published. Required fields are marked *