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;