C++?基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍及原理分析
基礎(chǔ)知識
計算機中所有的整數(shù)都是以補嗎的形式存儲的。
正數(shù)的補碼與原碼相同,負數(shù)的補碼是對其原碼逐位取反,但符號位除外;然后整個數(shù)加1。零分為+0和-0。
C++ 整數(shù)類型及所占內(nèi)存
取值范圍計算
無符號類型
以一個4位二進制舉例
全部為數(shù)據(jù)位。4位二進制編碼:0000-1111共8種,所以能表示0-7(23-1)。
總結(jié):對于有符號類型,如果是n位,則表示范圍為 0 - 2n-1。
有符號類型
以一個4位二進制舉例
如果以原碼表示:對于有符號類型,最高位是符號位,剩下的4-1=3位是數(shù)據(jù)位。所以數(shù)據(jù)為最多有8種編碼情況。000-111所以取值范圍為:-7(23-1)~-0和+0到+7,共15個數(shù)字。
計算機實際以補碼形式存儲整數(shù)。
- 對于正數(shù),補碼與原碼相同,范圍依舊是+0到+7(23-1)。
- 對于負數(shù),補碼是對其原碼逐位取反,但符號位除外;然后整個數(shù)加1。
- -7的二進制原碼:1111,所以補碼為:1001。
- -1的二進制原碼:1001,所以補碼為:1111。
- -0的二進制原碼:1000,所以補碼為:0000。與+0相同。(所以用它來表示個其他數(shù)吧)
沒有任何數(shù)的補碼是:1000這個編碼。所以多出來了。所以,規(guī)定1000這個補碼編碼為-8。
綜上:4位二進制在計算機中,表示數(shù)據(jù)的范圍:-8(23)-7(23-1)。
總結(jié):如果有符號類型數(shù)據(jù)部分占n位,則表示范圍為 -2n - +2n。
基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
c/c++ 利用sscanf進行數(shù)據(jù)拆分操作
這篇文章主要介紹了c/c++ 利用sscanf進行數(shù)據(jù)拆分操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12