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

シフトを利用>>して、物事をはるかに簡単にすることができます。

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 に答える