int main()
{
uint32_t n1 = 00000000000000000000000000001000;
uint32_t n2 = 00000000000000000000000000000100;
cout << n2;
}
當我使用Visual Studio 2013(C++),我得到的結果爲64爲什麼uint32_t的結果會自動變爲八進制數?
這是爲什麼談到八進制數字系統而不是二進制?
int main()
{
uint32_t n1 = 00000000000000000000000000001000;
uint32_t n2 = 00000000000000000000000000000100;
cout << n2;
}
當我使用Visual Studio 2013(C++),我得到的結果爲64爲什麼uint32_t的結果會自動變爲八進制數?
這是爲什麼談到八進制數字系統而不是二進制?
以0
開頭的數字字面意味着您希望它解釋爲八進制,這是我假設您使用「octonary」時的含義,這是我以前從未見過的一個詞,而它似乎是一個真正的詞,你可能會得到一些空洞的眼神,如果你使用它:-)
這種治療方法爲八進制是按照標準,C++11 2.14.2 Integer literals /1
:
八進制整數字面(基本爲八個)開始的數字0並且由一系列八進制數字組成。
對於二進制數,可能做最簡單的方法是用比特移位(預C++ 14):
uint32_t n1 = 1u << 3;
uint32_t n2 = 1u << 2;
C++ 14提供0b
前綴,如同對0x
一個爲十六進制的數字,但我並不完全相信這是與其他選項的可讀性,如果你還在使用大量的前導零:
uint32_t n1 = 0b00000000000000000000000000001000;
uint32_t n2 = 0b00000000000000000000000000000100;
經驗豐富的程序員,當然,可以立即從b地圖inary詛咒所以很可能只使用:
uint32_t n1 = 0x00000008;
uint32_t n2 = 0x00000004;
這是因爲與一家領先的0
一些被認爲是一個八進制數:
auto num = 04; //Octal number
在C++ 14或更高版本,如果你想指定二進制數字,你將不得不使用0b
前綴:
uint32_t n2 = 0b00000000000000000000000000000100;
^^
如果您不能使用C++ 14,你將不得不使用位移位或類似的技術來獲得d預期的結果。
對於十進制數字,您將有有擺脫領先的0
s。
你從哪裏要求計算機將其解釋爲二進制文件?沒有意識到它會是一個我能理解的八進制文字,但那麼爲什麼你不會期望十進制呢? –