簡單說一下C語言資料型別取值範圍不對稱的原因

2022-06-24 17:09:12 字數 508 閱讀 3239

首先是,數字在機器中是以補碼形式進行儲存的。了解過原碼、補碼、反碼的應該知道,在正數範圍內,它們三個是一樣的。

因此我們討論有符號數的補碼表示。

舉例char型別,該型別的取值範圍是[-128,127]。為什麼tmax比tmin的絕對值小1呢?

本來char有8個bits,作為有符號型別,除去最高位,還剩7bits,能表示的最大值就是127(111 1111),只考慮這7位的話,負數有[-1,-127],正數有[1,127]可以表示。

然後就可以發現,跟取值範圍差距的是0和-128。它們剛好分別是0000 0000和1000 0000。

我們知道,補碼表示中,最高位如果是0,就是表示非負數,0是非負數,所以0000 0000表示的是0,而1000 0000怎麼看都像是為了利用一下空間,把進製和符號位重疊了……哈哈哈

我的結論就是,本來應該是對稱的,但是因為符號數定義的是非負數和負數,所以得把0考慮進去,同時1000 0000也不想浪費,用它表示一下tmin,導致的不對稱。

C語言中資料型別取值範圍

c語言中的資料型別有void char short int float double。由於void是空型別,因此以下主要介紹char short int float double的取值範圍。1 signed char 1個位元組,取值範圍 128 127。最大值為127容易理解,0111 0111,...

C語言各種資料型別取值範圍

速查表 char 128 127 1 byte short 32768 32767 2 bytes unsigned short 0 65536 2 bytes int 2147483648 2147483647 4 bytes unsigned int 0 4294967295 4 bytes l...

ORACLE的資料型別 筆記一下

常用的資料庫字段型別如下 字段型別 中文說明 限制條件 其它說明 char 固定長度字串 最大長度2000 bytes varchar2 可變長度的字串 最大長度4000 bytes 可做索引的最大長度749 nchar 根據字符集而定的固定長度字串 最大長度2000 bytes nvarchar2...