直接使用bitmask指定要设置的位,然后进行替换。
uint64_t new_value = 0x0000001100000000;
uint64_t bit_mask = 0xFFULL<<32;
uint64_t reg_data = 0x111155FF33334444;
reg_data = (reg_data & (~bit_mask)) | new_value;
例如上述代码,将uint64_t中的[39:32]位从FF替换为11。
直接使用bitmask指定要设置的位,然后进行替换。
uint64_t new_value = 0x0000001100000000;
uint64_t bit_mask = 0xFFULL<<32;
uint64_t reg_data = 0x111155FF33334444;
reg_data = (reg_data & (~bit_mask)) | new_value;
例如上述代码,将uint64_t中的[39:32]位从FF替换为11。