int modify_bit_info_post(int data,int MSB_bit, int LSB_bit, int best_Code){
int temp_data;
int full_Bit_data;
int focused_bit_info;
focused_bit_info = 0;
if (MSB_bit < LSB_bit){
cout << "ERROR:: MSB_bit should be larger than LSB_bit, pls correct it!!!" << endl;
}
temp_data = data;
focused_bit_info = (((temp_data << (15 - MSB_bit))&0xffff) >> (15 - (MSB_bit - LSB_bit)));
if (debug){
cout << "temp_data =" << temp_data << endl;
cout << "focused_bit_info =" << focused_bit_info <<endl;
}
if (best_Code > 0){
if(focused_bit_info + best_Code > (pow(2.0, (MSB_bit - LSB_bit + 1)) - 1)){
best_Code = (pow(2.0, (MSB_bit - LSB_bit + 1)) - 1) - focused_bit_info;
if (debug){
cout << "best_Code =" << best_Code << endl;
}
}
}else if(best_Code < 0){
if(focused_bit_info + best_Code < 0){
best_Code = - focused_bit_info;
if (debug){
cout << "best_Code =" << best_Code << endl;
}
}
}
temp_data = temp_data + (best_Code << LSB_bit); // full bit of modified register info
if (debug){
cout << hex<<"temp_data =" << temp_data << endl;
cout << dec<<"temp_data =" << temp_data << endl;
}
// Prevent stupidity
full_Bit_data = temp_data;
return full_Bit_data;
}
获取指定bit位信息
最新推荐文章于 2022-12-12 15:47:14 发布