C++?基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍及原理分析
基礎(chǔ)知識(shí)
計(jì)算機(jī)中所有的整數(shù)都是以補(bǔ)嗎的形式存儲(chǔ)的。
正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼是對(duì)其原碼逐位取反,但符號(hào)位除外;然后整個(gè)數(shù)加1。零分為+0和-0。
C++ 整數(shù)類型及所占內(nèi)存
取值范圍計(jì)算
無符號(hào)類型
以一個(gè)4位二進(jìn)制舉例
全部為數(shù)據(jù)位。4位二進(jìn)制編碼:0000-1111共8種,所以能表示0-7(23-1)。
總結(jié):對(duì)于有符號(hào)類型,如果是n位,則表示范圍為 0 - 2n-1。
有符號(hào)類型
以一個(gè)4位二進(jìn)制舉例
如果以原碼表示:對(duì)于有符號(hào)類型,最高位是符號(hào)位,剩下的4-1=3位是數(shù)據(jù)位。所以數(shù)據(jù)為最多有8種編碼情況。000-111所以取值范圍為:-7(23-1)~-0和+0到+7,共15個(gè)數(shù)字。
計(jì)算機(jī)實(shí)際以補(bǔ)碼形式存儲(chǔ)整數(shù)。
- 對(duì)于正數(shù),補(bǔ)碼與原碼相同,范圍依舊是+0到+7(23-1)。
- 對(duì)于負(fù)數(shù),補(bǔ)碼是對(duì)其原碼逐位取反,但符號(hào)位除外;然后整個(gè)數(shù)加1。
- -7的二進(jìn)制原碼:1111,所以補(bǔ)碼為:1001。
- -1的二進(jìn)制原碼:1001,所以補(bǔ)碼為:1111。
- -0的二進(jìn)制原碼:1000,所以補(bǔ)碼為:0000。與+0相同。(所以用它來表示個(gè)其他數(shù)吧)
沒有任何數(shù)的補(bǔ)碼是:1000這個(gè)編碼。所以多出來了。所以,規(guī)定1000這個(gè)補(bǔ)碼編碼為-8。
綜上:4位二進(jìn)制在計(jì)算機(jī)中,表示數(shù)據(jù)的范圍:-8(23)-7(23-1)。
總結(jié):如果有符號(hào)類型數(shù)據(jù)部分占n位,則表示范圍為 -2n - +2n。
基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(56.合并區(qū)間)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(56.合并區(qū)間),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C語言詳細(xì)分析常見字符串函數(shù)與模擬實(shí)現(xiàn)
字符串函數(shù)(String?processing?function)也叫字符串處理函數(shù),指的是編程語言中用來進(jìn)行字符串處理的函數(shù),如C,pascal,Visual以及LotusScript中進(jìn)行字符串拷貝,計(jì)算長(zhǎng)度,字符查找等的函數(shù)2022-03-03C++語言中std::array的用法小結(jié)(神器用法)
這篇文章主要介紹了C++語言中std::array的用法小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11