2017-09-24 82 views
1

我想知道我的方法來確定類型的最大值和最小值是否正確。我已經搜索並找不到確切的方法來確定此確定各種類型的最大值和最小值的方法

這是我的方法: 要確認我使用this鏈接類型大小 現在的鏈接指出的int_32_t(默認情況下籤署)規模將在16 bits。所以LP32最多16位無IS 65535。但自簽署以來,我們將得到最大65535/2 = 32767.5,所以我假設它的範圍將是-32767 to 32767?我對麼 ?和uint32_t類似,LP32中的大小將爲16 bits。因此最大16位不是65535,所以範圍將是0 to 65535?我對麼 ? LP32ILP32之間的區別是什麼?

+0

你寫了一個定製'的atoi()'函數?無論你做了什麼?:-( – einpoklum

回答

1

您不必做出任何假設。只需使用標準性狀:

http://en.cppreference.com/w/cpp/types/numeric_limits

如:

std::numeric_limits<std::int32_t>::min(); 
std::numeric_limits<std::int32_t>::max(); 

爲了解決您的一些點:

int_32_t(默認情況下籤署)

不是默認情況下,但由語言標準授權。這是一個有符號的整數。無符號的等效項是std::uint32_t

int32_t [...]將16位

嗯...沒了。它的符號整型與沒有填充比特恰好32位的寬度,並使用2的負值補體(僅設置如果實現直接支持的類型)

我假定其範圍將是-32767到32767?我對麼 ?

號對於16位簽名的使用2的補(std::int16_t)的範圍是

-32,768 .. 32,767 

這裏是你如何能達到這些數字的整數:

int類型有16位(並沒有填充)。有了16位,您可以編碼2^16 = 65,536不同的值。以二的補這些值分佈如下:

  • [0, 32,767]:32,768正值
  • [-32,768, -1]:32,768負值
+0

我理解,但我想知道如果我的方法是正確的如何確定這些值? – Rajeshwar

+0

@Rajeshwar現在很清楚嗎? – bolov

+0

感謝您的答案我現在試圖消化它。 65,536而不是65.536 – Rajeshwar

相關問題