Bitwise operations in C. Write a C program which will either set or clear a sing
ID: 3908978 • Letter: B
Question
Bitwise operations in C.
Write a C program which will either set or clear 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 and then ask the user if he or she wants to clear or set a bit. Then ask the user which bit to set or clear. That can be a number between 0 and 31. Prompt the user for what should be entered each time. Be sure to validate all user input so the program cannot be crashed. After completing the operation ask the user if they want to do the entire operation again. The user would enter Y or y to do it again. This would be the entire operation from entering the first integer.
•If the user enters a 1 as the initial value and a 0 for the bit to clear the result would be 0.
•If the user enters a 1 as the initial value and a 0 for the bit to set the result would be 1.
•If the user enters a 10as the initial value and a 1 for the bit to clear then the result would be 8.
•If the user enters a 10 as the initial value and a 1 for the bit to set then the result would be 10.
•If the user enters a 10 as the initial value and a 2for the bit to clear then the result would be 10.
•If the user enters a 10 as the initial value and a 2 for the bit to set then the result would be 14.
Output for each operation should be easy to read giving the number before the switch and then the decimal number after the switch. No other output should be included.
Explanation / Answer
Given below is the code for the question.
Please do rate the answer if it was helpful. Thank you
#include <stdio.h>
#include <ctype.h>
int main(){
unsigned input;
unsigned output;
char op;
char ans;
int bit;
do{
do{
printf("Enter a value in the range 1-1000: ");
scanf("%u", &input);
}while(input < 1 || input > 1000);
getchar();
do{
printf("Do you want to set or clear (s or c)? ");
scanf("%c", &op);
op = tolower(op);
}while(op != 's' && op != 'c');
do{
printf("Which bit to you want to set/clear (0-31)? ");
scanf("%d", &bit);
}while(bit < 0 || bit > 31);
if(op == 's') //set bit
{
output = input | (0x1 << bit);
}
else
{
output = input & (~(0x1 << bit));
}
printf("input: %u ", input);
printf("output: %u ", output);
printf("Do you want to continue y/n? ");
getchar();//getrid of newline
scanf("%c", &ans);
printf(" ");
}while(ans == 'y' || ans == 'Y');
}
output
-------
Enter a value in the range 1-1000: 10
Do you want to set or clear (s or c)? s
Which bit to you want to set/clear (0-31)? 2
input: 10
output: 14
Do you want to continue y/n? y
Enter a value in the range 1-1000: 10
Do you want to set or clear (s or c)? c
Which bit to you want to set/clear (0-31)? 2
input: 10
output: 10
Do you want to continue y/n? y
Enter a value in the range 1-1000: 1
Do you want to set or clear (s or c)? s
Which bit to you want to set/clear (0-31)? 1
input: 1
output: 3
Do you want to continue y/n? y
Enter a value in the range 1-1000: 10
Do you want to set or clear (s or c)? c
Which bit to you want to set/clear (0-31)? 1
input: 10
output: 8
Do you want to continue y/n? n
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.