0

我想将像 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--;  
    }  
}
4

2 回答 2

3

您可以利用 shift using>>使事情变得更容易:

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].)

于 2012-09-16T14:23:12.620 回答
1

如果您在编译时知道大小,std::bitset<size> bits(value);将在其构造函数中执行您想要的操作。

于 2012-09-16T14:49:56.363 回答