Set or Clear a Specific Bit in a Register

Code

#include <stdio.h>
/*
#include <math.h>
int* dec_char(unsigned char reg)
{
    static int ans[8];
    for(int i=0; i<8;i++)
    {
         ans[i] = reg%2;
            reg =reg/2;
            
    }
    return ans;
}

int char_dec(int* reg2)
{

    int result = 0;
    for(int j=0; j<8; j++)
    {
       result +=(reg2[j]*pow(2,j));
    }
    
    return result;
}
unsigned char modifyBit(unsigned char reg, int pos, int mode) {
    // Write your code here
    int* result = dec_char(reg);
    result[pos]&=mode;
    unsigned char final_result = (unsigned char)char_dec(result);
    return final_result;
}
*/

unsigned char modifyBit(unsigned char reg, int pos, int mode) {
    // Write your code here
    int final_result;
    if(mode == 1)
    {   
        reg=reg|(1<<pos);
    }
    else
    {
        reg=reg&~(1<<pos);
    }
    
    return reg;
}

int main() {
    unsigned char reg;
    int pos, mode;
    scanf("%hhu %d %d", &reg, &pos, &mode);
    printf("%d", modifyBit(reg, pos, mode));
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

10 3 1

Expected Output

10