我正在閱讀convert bitset to int in c++的問題,並認爲,嘿,這不起作用,我已經嘗試過了。但後來我開始嘗試並很快我發現,將bitset <a>轉換爲signed int,其中<32
#include <bitset>
#include <iostream>
int main()
{
std::bitset<31> b31(-1);
std::bitset<32> b32(-1);
std::cout<<static_cast<int>(b31.to_ulong())<<std::endl;
std::cout<<static_cast<int>(b32.to_ulong())<<std::endl;
return 0;
}
使輸出
2147483647
-1
所以,我怎麼投位集比32小符號整數?
CLARIFICATION:我想在構造保存的位集時使用10個鹼基的值轉換回signed int。
我已經用gcc 4.6.2,mingw32的上贏7試過這個「商店位集簽署整數」,並與C風格得到相同的結果投(int)
FWIW,這將產生'-1 -1'在OSX x64與鏗鏘3.5 – WhozCraig 2014-12-09 12:08:55
好吧!我正要問我是否誤解了'to_ulong()'規範或者它是否是編譯器特定的。知道其他編譯器如何處理這個問題會很有意思,例如MSVC,如果讀者不想嘗試,請閱讀intel) – Schaki 2014-12-09 12:16:34