我想将像83这样的整数编码为二进制代码,如1100101,最快的方法是什么?现在我正在使用这段代码:
ToBinary(int size, int value) {
size--;
this->code = new bool[size];
int in = size;
while (in >= 0) {
if(pow(2, in) <= value) {
this->code[size-in] = pow(2, in);
value -= pow(2, in);
} else
this->code[size-in] = 0;
in--;
}
}
答案 0 :(得分:3)
您可以利用>>
进行转换,让事情变得更轻松:
ToBinary(int size, int value) {
int i = size;
this->code = new bool[size];
while(i--) {
this->code[i] = (value >> i) & 1;
}
}
(或者,以相反的顺序,this->code[size - i]
。)
答案 1 :(得分:1)
如果您在编译时知道大小,std::bitset<size> bits(value);
将在其构造函数中执行您想要的操作。