国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

天津網(wǎng)絡(luò)關(guān)鍵詞排名石家莊seo網(wǎng)站排名

天津網(wǎng)絡(luò)關(guān)鍵詞排名,石家莊seo網(wǎng)站排名,中山制作網(wǎng)站的公司嗎,鄭州網(wǎng)站推廣服務(wù)前言 小羊近期已經(jīng)將C語言初階學(xué)習(xí)內(nèi)容與鐵汁們分享完成,接下來小羊會繼續(xù)追更C語言進(jìn)階相關(guān)知識,小伙伴們坐好板凳,拿起筆開始上課啦~ 一、數(shù)據(jù)類型的介紹 我們目前已經(jīng)學(xué)了基本的內(nèi)置類型: char //字符數(shù)據(jù)類型 short …

在這里插入圖片描述

前言

小羊近期已經(jīng)將C語言初階學(xué)習(xí)內(nèi)容與鐵汁們分享完成,接下來小羊會繼續(xù)追更C語言進(jìn)階相關(guān)知識,小伙伴們坐好板凳,拿起筆開始上課啦~


一、數(shù)據(jù)類型的介紹

我們目前已經(jīng)學(xué)了基本的內(nèi)置類型:

char       //字符數(shù)據(jù)類型
short      //短整型
int        //整形
long       //長整型
long long  //更長的整形
float      //單精度浮點(diǎn)數(shù)
double     //雙精度浮點(diǎn)數(shù)

類型的基本歸類

  1. 整形家族
char:unsigned charsigned char
short:unsigned short[int]signed short[int]
int:unsigned intsigned int
long:unsigned long[int]signed long[int]

unsigned:無符號數(shù)類型

當(dāng)一個(gè)數(shù)是無符號類型時(shí),那么其最高位的1或0,和其它位一樣,用來表示該數(shù)的大小。

signed:有符號數(shù)類型

當(dāng)一個(gè)數(shù)是有符號類型時(shí),最高數(shù)稱為“符號位”。符號位為1時(shí),表示該數(shù)為負(fù)數(shù),為0時(shí)表示為正數(shù)。

注意:有符號類型可以表示正數(shù),負(fù)數(shù)或0,無符號類型僅能表示大于等于0的值

  1. 浮點(diǎn)型家族
float
double
  1. 構(gòu)造類型:
       //數(shù)組類型
struct //結(jié)構(gòu)體類型
enum   //枚舉類型
union //聯(lián)合類型
  1. 指針類型:
int* p;
char* p;
float* p;
void* p;
  1. 空類型:
void//(空類型)

二、整型在內(nèi)存中的存儲

以整型int為例,我們都知道常見的編譯器中int占四個(gè)字節(jié),那么計(jì)算機(jī)中這四個(gè)字節(jié)是如何將數(shù)據(jù)存儲下來的呢?
那我們先了解一下機(jī)器數(shù)真值的概念,再去了解原碼,反碼,補(bǔ)碼的概念

2.1 機(jī)器數(shù)

一個(gè)數(shù)在計(jì)算機(jī)中的二進(jìn)制表示形式,叫做這個(gè)數(shù)的機(jī)器數(shù)。機(jī)器數(shù)是帶符號的,在計(jì)算機(jī)中 用機(jī)器數(shù)的最高位存放符號,正數(shù)為0,負(fù)數(shù)為1。

例如:

+ 3的機(jī)器數(shù):0000 0011
- 3的機(jī)器數(shù):1000 0011

2.2 真值

因?yàn)榈谝晃皇欠栁?#xff0c;所以機(jī)器數(shù)的形式值就不等于真正的數(shù)值。所以,為區(qū)別起見,將帶符號位的機(jī)器數(shù)對應(yīng)的真正數(shù)值稱為機(jī)器數(shù)的真值。

例如:

0000 0001的真值 = +000 0001 = +1
1000 0001的真值 = -000 0001 = -1

2.3 原碼、反碼、補(bǔ)碼

對于一個(gè)數(shù),計(jì)算機(jī)要使用一定的編碼方式進(jìn)行存儲,原碼、反碼、補(bǔ)碼是機(jī)器存儲一個(gè)具體數(shù)字的編碼方式。

三種方式均有符號位數(shù)值位兩部分,符號位都是0表示“正數(shù)”,1表示“負(fù)數(shù)”,而數(shù)值位分正負(fù)數(shù)而定。

正數(shù)的原碼、反碼、補(bǔ)碼都相同,負(fù)數(shù)的原碼、反碼、補(bǔ)碼各不相同

原碼:
直接將數(shù)值按照正負(fù)數(shù)的形式翻譯成二進(jìn)制就可以得到原碼
反碼:
將原碼的符號位不變,其他位次按位取反
補(bǔ)碼:
反碼符號位不變,數(shù)值為+1

反碼回到原碼的兩種方式
1、補(bǔ)碼-1后 取反得到原碼
2、補(bǔ)碼取反后 +1得到原碼

對于整形來說:數(shù)據(jù)存放內(nèi)存中其實(shí)存放的是補(bǔ)碼,那這又是為什么呢?

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

我們看看在內(nèi)存中的存儲:
在這里插入圖片描述
我們知道內(nèi)存中a和b存儲的是補(bǔ)碼,但我們發(fā)現(xiàn)存儲的順序有點(diǎn)不對勁。
-10在內(nèi)存中存儲應(yīng)該是FFFFFFF6,而我們看到的是F6FFFFFF。
這里小羊呢,就為鐵汁們了解一下大小端

2.4 大小端介紹

什么是大小端:

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

例如:

數(shù)字0x12 34 56 78在內(nèi)存中:

大端模式:(我們通常直觀上認(rèn)為的模式)

        低地址 --------------------> 高地址0x12  |  0x34  |  0x56  |  0x78

小端模式:

        低地址 --------------------> 高地址0x78  |  0x56  |  0x34  |  0x12

** 為什么會有大端和小端呢?**
因?yàn)樵谟?jì)算機(jī)系統(tǒng)中,我們是以字節(jié)為單位的,每個(gè)地址單元都對應(yīng)著一個(gè)字節(jié),一個(gè)字節(jié)為8bit。但是在C語言中除了8 bit的char之外,還有16 bit的short型,32 bit的long型(要看具體的編譯器),另外,對于位數(shù)大于8位的處理器,例如16位或者32位的處理器,由于寄存器寬度大于一個(gè)字節(jié),那么必然存在著一個(gè)如何將多個(gè)字節(jié)安排的問題。因此就導(dǎo)致了大端存儲模式和小端存儲模式。

如何判斷大小端的代碼:

#include<stdio.h>
int main()
{int i = 1;//0000 0001char* p = &i;if (*p == 1)//若第一個(gè)地址存的是1,即為小端,反則大端printf("小端");elseprintf("大端";return 0;
}

自定義函數(shù)測試:

#include<stdio.h>int check_sys()
{int a = 1;char* p = (char*)&a;if (*p == 1)return 1;elsereturn 0;
}int main()
{if (check_sys() == 1)printf("小端");elseprintf("大端");return 0;
}

三、浮點(diǎn)數(shù)在內(nèi)存中的存儲

#include<stdio.h>
int main()
{int n = 9;float* p = (float*)&n;printf("n的值為:%d\n", n);printf("*p的值為:%f\n", *p);*p = 9.0;printf("n的值為:%d\n", n);printf("*p的值為:%f\n", *p);return 0;
}

我們先試著猜一下結(jié)果
輸出顯示:
在這里插入圖片描述
怎么樣,這個(gè)結(jié)果是不是有點(diǎn)出乎意料!那么就跟著小羊來學(xué)習(xí)浮點(diǎn)數(shù)的存儲規(guī)則吧。

3.1浮點(diǎn)數(shù)存儲規(guī)則

浮點(diǎn)數(shù)存儲形式:

根據(jù)國際標(biāo)準(zhǔn)IEEE(電子和電子工程協(xié)會)754,任意一個(gè)二進(jìn)制浮點(diǎn)數(shù)V可以表示為下面的形式:

(-1) ^ S * M * 2 ^ E
?
?1.? (-1) ^ S 表示符號位,當(dāng)S=0時(shí),V為正數(shù);當(dāng)S=1時(shí),V為負(fù)數(shù)
?2.? M 表示有效數(shù)字,且1 <= M <2
?3.? 2 ^ E表示指數(shù)位

例如:

  1. 十進(jìn)制的5.0,寫成二進(jìn)制是0101 ------> 1.10x2^2
    可以得出s=0,M=1.01,E=2
  2. 十進(jìn)制的-7.0,寫成二進(jìn)制是0111 ------->1.11x2^2
    可以得出s=-1,M=1.11,E=2

IEEE 754 規(guī)定:

對于 32 位的浮點(diǎn)數(shù)(單精度),最高的 1 位是符號位 s ,接著的 8 位是指數(shù) E ,剩下的 23位為有效數(shù)字 M 。

在這里插入圖片描述

對于 64 位的浮點(diǎn)數(shù)(雙精度),最高的 1 位是符號位S,接著的 11 位是指數(shù) E ,剩下的 52 位為有效數(shù)字 M 。
在這里插入圖片描述
IEEE 754 對有效數(shù)字** M **和指數(shù) E ,還有一些特別規(guī)定。
前面說過, 1≤M<2 ,也就是說, M 可以寫成 1.xxxxxx 的形式,其中 xxxxxx 表示小數(shù)部分。
IEEE 754 規(guī)定,在計(jì)算機(jī)內(nèi)部保存 M 時(shí),默認(rèn)這個(gè)數(shù)的第一位總是 1 ,因此可以被舍去,只保存后面的xxxxxx部分。比如保存 1.01 的時(shí)候,只保存01 ,等到讀取的時(shí)候,再把第一位的 1 加上去。這樣做的目的,是節(jié)省 1 位有效數(shù)字。以 32 位浮點(diǎn)數(shù)為例,留給M 只有 23 位,將第一位的1 舍去后等于可以保存 24 位有效數(shù)字。

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

3.2 浮點(diǎn)型的讀取

我們知道浮點(diǎn)型在內(nèi)存中的存儲后,將步驟反過來就是取出的過程。
1、有效數(shù)字M:

IEEE 754規(guī)定,在計(jì)算機(jī)內(nèi)部保存M時(shí),默認(rèn)這個(gè)數(shù)的第一位總是1,因此可以被舍去,只保存小數(shù)部分。比如保存1.0110001101時(shí),只保存0110001101,后面的位數(shù)補(bǔ)0就可以了,等到讀取的時(shí)候,再把第一位的1補(bǔ)上去。

2、指數(shù)E

E為一個(gè)無符號整數(shù)(unsigned int)根據(jù)指數(shù)域不同取值分為一下三種情況:

1)E不全為0或不全為1(規(guī)格化值)

這是最常見情況,取出內(nèi)存中的數(shù)時(shí),指數(shù)E的計(jì)算值減去127(或1023),得到真實(shí)值,再將有效數(shù)字M前加上第一位的1。

2)E全為0(非規(guī)格化值)

這時(shí),浮點(diǎn)數(shù)的指數(shù)E等于1-127(或1-1023)即為真實(shí)值,有效數(shù)字M不再加上第一位的1,而是還原為0.xxxxxxx的小數(shù)。這樣做是為了表示正負(fù)零,以及接近于0的很小的數(shù)字。

3)E全為1(特殊數(shù)值)

當(dāng)指數(shù)域全為1時(shí)屬于這種情形。此時(shí),如果小數(shù)域全為0且符號域S=0,則表示正無窮,如果小數(shù)域全為0且符號域S=1,則表示負(fù)無窮。如果小數(shù)域不全為0時(shí),浮點(diǎn)數(shù)將被解釋為NaN, 即不是一個(gè)數(shù)(Not a Number)

解釋前面的題目

整形9以浮點(diǎn)型打印
整形存儲,浮點(diǎn)型打印
0000  0000 0000 0000 0000 0000 0000 1001
浮點(diǎn)型讀取:
s=0,M=000 0000 0000 0000 0000 0110,E=0000 0000(E全為0)
所以結(jié)果為:0.0000(近于0的很小的數(shù)字)現(xiàn)在看例題的第二部:
浮點(diǎn)數(shù)9.0以整形打印
9.0 -> 1001.0 -> (-1)^0*1.001*2^3 -> s=0,M=1.001,E=3+127=130
所以第一位的符號位s=0,有效數(shù)字M為001后面在加20個(gè)0,湊滿23位,指數(shù)E為3+127=130,即10000010
所以寫成S+E+M:
0 10000010 001 0000 0000 0000 0000 000032位的二進(jìn)制數(shù),還原成十進(jìn)制,正是1091567616

總結(jié)

希望看完這篇文章對鐵汁們有所幫助,小羊后續(xù)還會持續(xù)更新C語言的學(xué)習(xí)知識,希望小伙伴們給個(gè)支持,來個(gè)一鍵三連~
在這里插入圖片描述

http://m.aloenet.com.cn/news/34066.html

相關(guān)文章:

  • wordpress最新功能網(wǎng)站優(yōu)化技術(shù)
  • 哪個(gè)網(wǎng)站做首飾批發(fā)好百度網(wǎng)頁版登錄入口官網(wǎng)
  • 廣東東莞網(wǎng)站建設(shè)微信管理軟件哪個(gè)最好
  • wordpress標(biāo)簽別名轉(zhuǎn)換網(wǎng)絡(luò)seo招聘
  • 湖南哪里有做網(wǎng)站的愛站工具包手機(jī)版
  • 網(wǎng)站做廣告費(fèi)用關(guān)鍵詞調(diào)價(jià)工具哪個(gè)好
  • 邢臺網(wǎng)站建設(shè) 冀icp備信息流優(yōu)化師證書
  • 淄博企業(yè)網(wǎng)站建設(shè)自動的網(wǎng)站設(shè)計(jì)制作
  • 網(wǎng)站年費(fèi)怎么做分錄十大免費(fèi)貨源網(wǎng)站免費(fèi)版本
  • 建立一個(gè)公司的網(wǎng)站嗎百度競價(jià)點(diǎn)擊神器
  • 曲靖做網(wǎng)站價(jià)格超級seo外鏈
  • 網(wǎng)站開發(fā)課程設(shè)計(jì)參考文獻(xiàn)5118網(wǎng)站如何使用免費(fèi)版
  • 地方網(wǎng)站做的好的百度競價(jià)產(chǎn)品
  • 網(wǎng)站建設(shè) 服務(wù)器友情鏈接工具
  • 外貿(mào)公司網(wǎng)站多少錢網(wǎng)頁制作作業(yè)100例
  • 深圳建站公司推薦seo網(wǎng)站建設(shè)是什么意思
  • 查看網(wǎng)站流量跨境電商平臺推廣
  • 合肥市中小企業(yè)局網(wǎng)站實(shí)時(shí)seo排名點(diǎn)擊軟件
  • 膠州專業(yè)建站湖北seo服務(wù)
  • 做外貿(mào)商城網(wǎng)站鄭州網(wǎng)絡(luò)推廣平臺
  • 厚街做網(wǎng)站公司代做網(wǎng)頁設(shè)計(jì)平臺
  • 探測網(wǎng)站是什么程序做的國內(nèi)10大搜索引擎
  • 網(wǎng)站數(shù)據(jù)分析指標(biāo)百度seo招聘
  • 網(wǎng)站建設(shè)是哪種發(fā)票中國十大品牌策劃公司
  • 朗朗上口的廣告公司名稱黑帽seo是什么意思
  • 在線做靜態(tài)頭像的網(wǎng)站google app
  • 桓臺建設(shè)網(wǎng)站百度網(wǎng)址導(dǎo)航
  • 百度做任務(wù)的網(wǎng)站百度搜索資源平臺token
  • 企業(yè)網(wǎng)站建設(shè)方案書 范本網(wǎng)絡(luò)營銷方案設(shè)計(jì)范文
  • 網(wǎng)站關(guān)鍵詞長尾詞推廣普通話繪畫