我有一个 uint32_t 变量,我想随机修改前 10 个较低有效位(0-9),然后仍然随机修改第 10 位到第 23 位。我用 C++ 编写了这个简单的程序,它适用于前 10 位,但不适用于其他位。我不明白为什么
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <iostream>
#include <math.h>
using namespace std;
void printuint(uint32_t value);
int main(){
uint32_t initval=0xFFFFFFFF;
uint32_t address;
uint32_t value;
uint32_t final;
address=rand()%1024;
address<<=23;
printf("address \n");
printuint(address);
printf("final\n");
final = (initval & address);
printuint(final);
return 0;
}
void printuint (uint32_t value){
while (value) {
printf("%d", value & 1);
value >>= 1;
}
cout<<endl;
}
添加这个
value = rand() % 16384;
printuint(value);
和修改final = (initval & address) & value;