免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

數(shù)據(jù)內(nèi)存在C語言中的存儲-創(chuàng)新互聯(lián)

目錄

成都創(chuàng)新互聯(lián)公司是專業(yè)的定遠網(wǎng)站建設(shè)公司,定遠接單;提供成都做網(wǎng)站、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行定遠網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

前言

一.C語言的基本數(shù)據(jù)類型介紹

? 1.1整形家族

?編輯

1.2浮點型家族

? 1.3指針類型

? 1.4構(gòu)造類型

? 1.5空類型void?

二.整形在內(nèi)存中的存儲

2.1原碼,反碼,補碼

? 2.2大小端的介紹

三. 浮點數(shù)的存儲

3.1舉一個例子

3.2浮點數(shù)存儲規(guī)則

3.3解釋例題

四.結(jié)語:


前言

新年的第一篇博客,記錄一下新一年的學習8。

大家都知道數(shù)據(jù)在計算機中是用二進制進行存儲的,一個字節(jié)由8位二進制數(shù)組成。那數(shù)據(jù)在C語言存儲的細節(jié)是怎么樣的呢?這篇文章就帶大家討論這個問題。

一.C語言的基本數(shù)據(jù)類型介紹 ? ? ? ? 1.1整形家族

在windows64位系統(tǒng)中,long long 占8個字節(jié),long占4個字節(jié),int占4個字節(jié),short占2個字節(jié),char占1個字節(jié)。

為什么要把char歸入整形家族呢?因為字符數(shù)據(jù)在c語言中本質(zhì)儲存的ASCII碼,而ASCII碼是整數(shù),所以存儲方式與整數(shù)一致。

1.2浮點型家族

在windows64位系統(tǒng)中,float占4個字節(jié),double占8個字節(jié)。

? 1.3指針類型

指針類型(當然指針類型不只這些,這里沒有列舉完)?,在64位系統(tǒng)下占8個字節(jié),32位系統(tǒng)下占4個字節(jié)。

? 1.4構(gòu)造類型

這些類型的存儲要根據(jù)內(nèi)部的數(shù)據(jù)類型計算,這里就不做詳細描述

? 1.5空類型void?

void表示無類型(空類型)。

通常應用于函數(shù)的返回類型、函數(shù)的參數(shù)、指針類型。
二.整形在內(nèi)存中的存儲 ????????2.1原碼,反碼,補碼

什么是原碼呢?

原碼就是整數(shù)直接轉(zhuǎn)換成二進制后形成的二進制序列。如下圖所示。

因為a是int類型,int類型由4個字節(jié)組成,所以它轉(zhuǎn)換成二進制后的源碼應該由32位二進制組成。

在C語言的規(guī)定中,正整數(shù)的原碼、反碼、補碼是相同的。

PS:它是怎么知道正負的呢?在c語言中,數(shù)據(jù)的原碼首位字符代表正負(0為正,-1為負)。

看完了正數(shù)的原反補,現(xiàn)在我們來看負數(shù)。

負數(shù)的原碼與整數(shù)一樣,都是由數(shù)字轉(zhuǎn)化為二進制得到,與正數(shù)不同的是,它的第一位是1,也就是符號位為1。

它的反碼怎么得來呢?

負數(shù)的反碼由原碼轉(zhuǎn)化而來,規(guī)則是:符號位不變,其他位依次按位取反得到。補碼則是反碼加一得到。

但是數(shù)據(jù)中為什么要存在原碼、反碼、補碼呢?

在計算機系統(tǒng)中,數(shù)值一律用補碼來表示和存儲。原因在于,使用補碼,可以將符號位和數(shù)值域統(tǒng) 一處理; 同時,加法和減法也可以統(tǒng)一處理( CPU 只有加法器 )此外,補碼與原碼相互轉(zhuǎn)換,其運算過程 是相同的,不需要額外的硬件電路。 原因如下圖所示:

我們也可以驗證一下,我這里查看的是VS2022中的內(nèi)存存儲。

但是我們看到內(nèi)存存儲的順序又存在一些問題,它好像是倒著存儲的。

這又是什么原因呢??

? 2.2大小端的介紹

什么是大小端:

大端(存儲)模式,是指數(shù)據(jù)的低位保存在內(nèi)存的高地址中,而數(shù)據(jù)的高位,保存在內(nèi)存的低地址 中; 小端(存儲)模式,是指數(shù)據(jù)的低位保存在內(nèi)存的低地址中,而數(shù)據(jù)的高位 , ,保存在內(nèi)存的高地 址中。

PS:0x就是十六進制的意思。

這里我們可以看到數(shù)據(jù)的存儲是倒著存的。

這里的11是低位數(shù)據(jù)存在低地址處,44是高位數(shù)據(jù)存在高地址處。

便于記憶可以簡單的理解為,小端是倒著存,大端是正著存。

三. 浮點數(shù)的存儲 3.1舉一個例子

為什么會出現(xiàn)這樣的情況呢?

3.2浮點數(shù)存儲規(guī)則 根據(jù)國際標準 IEEE (電氣和電子工程協(xié)會) 754 ,任意一個二進制浮點數(shù) V 可以表示成下面的形式: (-1)^S * M * 2^E PS: (-1)^S 表示符號位,當 S=0 , V 為正數(shù);當 S=1 , V 為負數(shù)。 M 表示有效數(shù)字,大于等于 1 ,小于 2 。 2^E 表示指數(shù)位。 這個是什么意思呢? 這里舉個例子比如5.5可以表示為:(-1)^0*1.011*2^2 這個算式怎么的出來的呢? 首先把5.5轉(zhuǎn)化為二進制101.1 再轉(zhuǎn)化成科學計數(shù)法表示也就是1.011*2^2

IEEE 754對有效數(shù)字M和指數(shù)E,還有一些特別規(guī)定?

因為在浮點數(shù)中M永遠都是大于等于1小于2的,所以E最前面的1沒有必要存儲,這樣可以多一位精度。

至于指數(shù) E ,情況就比較復雜。 首先, E 為一個無符號整數(shù)( unsigned int ) 這意味著,如果 E 為 8 位,它的取值范圍為 0~255 ;如果 E 為 11 位,它的取值范圍為 0~2047 。但是,我們 知道,科學計數(shù)法中的E 是可以出 現(xiàn)負數(shù)的,所以 IEEE 754 規(guī)定,存入內(nèi)存時 E 的真實值必須再加上一個中間數(shù),對于 8 位的 E ,這個中間數(shù) 127;對于 11 位的 E ,這個中間 數(shù)是 1023 。比如, 2^10 的 E 是 10 ,所以保存成 32 位浮點數(shù)時,必須保存成 10+127=137 ,即 10001001 。 也就說在存儲E時要加上127再進行存儲。 其次就是E如果為全1或者全0

如果E為全一為無窮大(正無窮與負無窮),如果E為全0代表無窮小(無限接近于0)

如果E中有1也有0,那就正常計算即可。

3.3解釋例題

四.結(jié)語:

數(shù)據(jù)的存儲就講完了,如果有哪里講的不嚴謹,歡迎大家來討論。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章名稱:數(shù)據(jù)內(nèi)存在C語言中的存儲-創(chuàng)新互聯(lián)
瀏覽路徑:http://newbst.com/article2/hhgic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)外貿(mào)網(wǎng)站建設(shè)品牌網(wǎng)站制作做網(wǎng)站品牌網(wǎng)站設(shè)計品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站