質問

私はそれのバイナリに番号を変換するプログラムを作成しようとしているメートルます。

コード:

    #include<iostream>
    #include<algorithm>
    #include<bitset>
    using namespace std;
    int main()
    {
        int a;
        string k;
        bitset<CHAR_BIT> n;
        cin>>a;
        n=bitset<CHAR_BIT>(a);
        cout<<n<<" ";
            return 0;
   }
それは以上の6桁のバイナリが含まれているとして、

プログラムには585のために間違った答えを与えます。どうすれば、このような大きな番号?

役に立ちましたか?

解決

Aビット集合は固定ビット数を有します。あなたは、8ビットのビットセットを持つことになりますので、CHAR_BITが8で、ほとんどのシステムで - あなたはbitset<CHAR_BIT>を指定します。あなたはビットセットに大きな数を詰め込むしようとすると、最上位ビットは破棄されます。

あなたは事前に最大の番号を知っている場合は、

あなたが例えばbitset<16>またはbitset<32>を指定することができ、対処する必要があります。そうしないと、あなたには、いくつかの他のデータ型をhref="https://stackoverflow.com/questions/670308/alternative-to-vectorbool">

他のヒント

= 73 585 MOD 256(CHAR_BITが8であると仮定して)
ベース73 2 = 0b01001001
プログラムは01001001 に印刷ん。
私はそこの何が間違って表示されません。

あなたがaの全範囲を保存したい場合は、

、ビットセットは、

として宣言されなければなりません
bitset<CHAR_BIT * sizeof(a)> n (a);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top