This question already has answers here:
How do you set, clear, and toggle a single bit?
                                
                                    (28个答案)
                                
                        
                                3个月前关闭。
            
                    
函数set_bit(uint64_tx, int pos, bool value)的主体,返回输入x的修改后的值,其中pos位置的位替换为值。

请记住,在C语言中(在stdbool.h中定义),true是整数1,而false是整数0。



uint8_t a=0b00000000;
uint8_t b=0b00001000;
uint8_t c=0b11111101;
uint8_t d=0b11011011;

// l'opération  ~( a ) renvoi 0b11111111
// l'opération (c & a) renvoi 0b00000000
// l'opération (c & b) renvoi 0b00001000
// l'opération (a | b) renvoi 0b00001000
// l'opération (d & c) renvoi 0b11011001

#include <stdint.h>
#include <stdbool.h>

/*
* @pre 0<= pos < 64
*/

uint64_t set_bit(uint64_t x, int pos, bool value)
{
    // à compléter
}

最佳答案

uint64_t set_bit(uint64_t x, int pos, bool value)
{
    // check range
    if (pos<0 || (pos&0x40))
      return 0; // error
    return ((x &~((uint64_t)1<<pos)) | ((uint64_t)value<<pos));
}

关于c - C语言中的按位运算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59042304/

10-11 22:13