最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C/C++ 從入門(mén)到入門(mén) 3 數(shù)據(jù)類(lèi)型(非編程語(yǔ)言向)

2023-02-23 14:06 作者:確實(shí)挺難受  | 我要投稿

問(wèn)個(gè)不是問(wèn)題的問(wèn)題, 為什么要有數(shù)據(jù)類(lèi)型......

再問(wèn)個(gè)問(wèn)題, 為什么北方冬天外出要穿羽絨服......

一切都指向一個(gè)答案?

--> 我需要 <--

說(shuō)了等于沒(méi)說(shuō).

計(jì)算機(jī)數(shù)據(jù)類(lèi)型的存在原因是, 現(xiàn)實(shí)世界中有很多不同類(lèi)型的數(shù)據(jù), 計(jì)算機(jī)無(wú)法直接區(qū)分, 所以需要利用不同的編碼格式以及運(yùn)算規(guī)則, 使計(jì)算機(jī)存儲(chǔ)并且使用這些數(shù)據(jù).

鴿了幾個(gè)月, 今天接著說(shuō)

我們先不從C / C++ 中的數(shù)據(jù)類(lèi)型表示方式說(shuō)起. 我們先扯點(diǎn)別的.

在計(jì)算機(jī)中, 所有數(shù)據(jù)都是用二進(jìn)制的方式存儲(chǔ)的. (啊除非你說(shuō)的是貼在主板或者某芯片上的標(biāo)簽上的信息)?同樣的二進(jìn)制數(shù)據(jù), 在沒(méi)有任何其他的輔助方案的情況下, 只有一種表示方式. 那就是純純的二進(jìn)制.?

所以, 人們?cè)跀?shù)制的基礎(chǔ)上, 搞出了數(shù)碼的概念. 本文將針對(duì)常見(jiàn)的整數(shù)和浮點(diǎn)數(shù)的編碼方式進(jìn)行說(shuō)明, 讓各位較為直觀的了解到不同類(lèi)型數(shù)據(jù)表達(dá)格式的不同.

整數(shù)

整數(shù)常用的有四種表示方法, 分別是 原碼 反碼 補(bǔ)碼 移碼.

根據(jù)UP所學(xué), 給出解釋. 以下表示方式, 約定 6 位二進(jìn)制 編碼, 其中符號(hào)位占一位

原碼

將二進(jìn)制表示方式中的 + - 符號(hào), 以 s 表示, 其中 s 是??(-1)%5Es, 在二進(jìn)制中, 1 表示為 負(fù)數(shù), 0 表示為整數(shù), s 所在的位稱(chēng)為 符號(hào)位,?s 就是?數(shù)符.?

e.g. 表示 5, -5

5_%7B(10)%7D%20%3D%20101_%7B(2)%7D%20%3D%2000%5C%200101_%7B(%E5%8E%9F)%7D%5C%5C%0A-5_%7B(10)%7D%20%3D%20-101_%7B(2)%7D%20%3D%2010%5C%200101_%7B(%E5%8E%9F)%7D%0A

相對(duì)于純二進(jìn)制, 原碼將符號(hào)數(shù)字化了.

反碼

正數(shù)反碼和原碼完全相同, 不再說(shuō)明.

針對(duì)負(fù)數(shù). 反碼保持符號(hào)位不動(dòng), 將所有的數(shù)值位按位取反(0, 1互換).

e.g. 表示 5, -5

5_%7B(10)%7D%20%3D%20101_%7B(2)%7D%20%3D%2000%5C%200101_%7B(%E5%8E%9F%2C%20%E5%8F%8D)%7D%5C%5C%0A-5_%7B(10)%7D%20%3D%20-101_%7B(2)%7D%20%3D%2010%5C%200101_%7B(%E5%8E%9F)%7D%20%3D%2011%5C%201010_%7B(%E5%8F%8D)%7D%0A

將原碼的數(shù)值位全部取反操作

補(bǔ)碼

正數(shù)的補(bǔ)碼和原碼完全相同, 不再說(shuō)明

針對(duì)負(fù)數(shù), 補(bǔ)碼在反碼的基礎(chǔ)上, 結(jié)果做 + 1 操作.

e.g. 表示 5, -5?

5_%7B(10)%7D%20%3D%20101_%7B(2)%7D%20%3D%2000%5C%200101_%7B(%E5%8E%9F%2C%20%E5%8F%8D)%7D%5C%5C%0A-5_%7B(10)%7D%20%3D%20-101_%7B(2)%7D%20%3D%2010%5C%200101_%7B(%E5%8E%9F)%7D%20%3D%2011%5C%201010_%7B(%E5%8F%8D)%7D%20%3D%2011%201011_%7B(%E8%A1%A5)%7D%0A

補(bǔ)碼回到原碼的操作也是除符號(hào)位以外按位取反再加一

移碼

隔路的一種編碼, 常見(jiàn)的是數(shù)值位和補(bǔ)碼完全相同, 符號(hào)位和補(bǔ)碼完全相反.

C 語(yǔ)言中, 帶符號(hào)數(shù), 都是采用補(bǔ)碼的方式進(jìn)行存儲(chǔ). 原因在于, 計(jì)算機(jī)計(jì)算加法操作, 比計(jì)算減法操作容易很多, 所以將減法操作, 轉(zhuǎn)換成為了加相反數(shù)的操作., 如何讓加相反數(shù)也能方便表示? 我們通過(guò)思考鐘表的調(diào)整考慮.?

現(xiàn)在鐘表指向 8 位置, 現(xiàn)在向后調(diào)整時(shí)間的旋鈕壞了. 只能向前調(diào)整, 問(wèn)調(diào)整幾個(gè)小時(shí), 能調(diào)整到 4 的位置?

答案是 8 個(gè)小時(shí)

將相同的思想遷移到二進(jìn)制中, 補(bǔ)碼的意義就在于此.

e.g. 計(jì)算 5-7?

5_%7B(10)%7D%20%3D%20101_%7B(2)%7D%3D%2000%5C%20101_%7B(%E5%8E%9F%2C%20%E8%A1%A5)%7D%5C%5C%0A-7_%7B(10)%7D%20%3D%20-111_%7B(2)%7D%20%3D%2010%5C%20111_%7B(%E5%8E%9F)%7D%20%3D%2011%5C%20000_%7B(%E5%8F%8D)%7D%20%3D%2011%5C%20001_%7B(%E8%A1%A5)%7D

11110_%7B(%E8%A1%A5)%7D%20%3D%2010010_%7B(%E5%8E%9F)%7D%20%3D%20-10_%7B(2)%7D%20%3D%20-2

將減法轉(zhuǎn)換為加法, 是計(jì)算復(fù)雜程度降低. 就是補(bǔ)碼的存在意義.

以上是關(guān)于整數(shù)在計(jì)算機(jī)中的表達(dá)方式.

浮點(diǎn)數(shù)

浮點(diǎn)數(shù)是和定點(diǎn)數(shù)相對(duì). 所謂定點(diǎn)數(shù), 就是制定了小數(shù)點(diǎn)位置的數(shù).

在電腦中,定點(diǎn)數(shù)(英語(yǔ):fixed-point number)是指用固定整數(shù)字?jǐn)?shù)表達(dá)分?jǐn)?shù)的格式,屬于實(shí)數(shù)數(shù)據(jù)類(lèi)型中一種。例如美元常會(huì)表示到二位小數(shù),以分來(lái)表示,即為一種定點(diǎn)數(shù)。有時(shí)定點(diǎn)數(shù)也會(huì)要求要有固定的整數(shù)字?jǐn)?shù)。定點(diǎn)數(shù)與更復(fù)雜的浮點(diǎn)數(shù)相對(duì)。

在定點(diǎn)數(shù)表示法中,小數(shù)部分和整數(shù)部分一樣,也會(huì)表示為進(jìn)制底數(shù)b的冪次,不過(guò)是以負(fù)數(shù)冪次來(lái)表示。最常見(jiàn)的定點(diǎn)數(shù)表示法是十進(jìn)制(底數(shù)為10)和二進(jìn)制(底數(shù)為2)。若存儲(chǔ)了n位的小數(shù),其數(shù)值一定是b?n的整數(shù)倍。定點(diǎn)數(shù)表示法也會(huì)用來(lái)省略整數(shù)中較低位數(shù)的值,例如將金錢(qián)表示為1000美元的整數(shù)倍。

在人們處理有小數(shù)的十進(jìn)制數(shù)字時(shí),會(huì)在整數(shù)和小數(shù)之間加上小數(shù)點(diǎn)('.'或是',')。不過(guò)定點(diǎn)數(shù)中,整數(shù)和小數(shù)的位數(shù)長(zhǎng)度是依程序的規(guī)劃來(lái)決定。

--摘自 維基百科 定點(diǎn)數(shù)介紹

當(dāng)然, 以上內(nèi)容, 由于出現(xiàn)的頻率很少, 且在程序設(shè)計(jì)中很少涉及, 所以不做過(guò)多介紹, 浮點(diǎn)數(shù)在C / C++語(yǔ)言中的常用兩種表達(dá)方式是 float 和 double 分別代表 32 位浮點(diǎn)數(shù)和 64 位浮點(diǎn)數(shù). 浮點(diǎn)數(shù)在計(jì)算機(jī)中的表示方式按照下面的公式分成三個(gè)部分:

(-1)%5ES%20%5Ctimes%202%5EE%20%5Ctimes%20M%20?

S%20%5Ctext%7B%E7%A7%B0%E4%B8%BA%E6%95%B0%E7%AC%A6%2C%20%7DE%20%5Ctext%7B%20%E7%A7%B0%E4%B8%BA%E9%98%B6%E7%A0%81%2C%20%7D%20M%20%5Ctext%7B%20%E7%A7%B0%E4%B8%BA%E5%B0%BE%E6%95%B0%7D

其中數(shù)符占1位表示正負(fù), 針對(duì)不同種類(lèi)的浮點(diǎn)類(lèi)型數(shù)據(jù), 有不同種類(lèi)的階碼長(zhǎng)度要求和尾數(shù)長(zhǎng)度要求.

32 位浮點(diǎn)數(shù)

階碼 E 占 8 位, 采用移碼編碼, 8位二進(jìn)制可以表示的正整數(shù)范圍是0~255,? 分出一半來(lái)表示?128~255和-127~0, 階碼設(shè)計(jì)上不想出現(xiàn)判斷數(shù)符的情況,?將所有的階碼為負(fù)數(shù)的部分移動(dòng)到整數(shù), 所以偏置值是127. 即, 如果真值是-1 在階碼表示中, 應(yīng)該寫(xiě)成是127-1 = 126的二進(jìn)制表示方式.?

尾數(shù) M 占剩余的23位, 表示為科學(xué)記數(shù)法中的數(shù)值部分, 嚴(yán)格按照科學(xué)記數(shù)法處理.

比如 1010.01111, 應(yīng)該先轉(zhuǎn)換成1.01001111再填入尾數(shù)部分. IEEE考慮到, 以0為整數(shù)部分時(shí), 會(huì)有至少1位的內(nèi)容無(wú)法精確表達(dá)出來(lái), 所以要求, 尾數(shù)部分 M = 1.m. 填入小數(shù)點(diǎn)后面的 m 部分缺位右側(cè)補(bǔ)零.?這個(gè)操作, 行話(huà)叫"規(guī)格化".

e.g. 沒(méi)有規(guī)格化的 0.m ; 規(guī)格化的1.m;

比如定點(diǎn)數(shù) 0.00000111 應(yīng)該轉(zhuǎn)換成 1.11, 并且調(diào)整相應(yīng)的階碼值再將小數(shù)點(diǎn)后面的部分填入尾數(shù)區(qū)域.

32位浮點(diǎn)數(shù)IEEE格式要求

64 位浮點(diǎn)數(shù)

階碼? 11 為, 采用移碼編碼.11位. 11位2進(jìn)制可以表達(dá)的整數(shù)范圍是0~2047, 分一半表示 -1023~0 和 1~1024. 即用 表現(xiàn)值0 表示真值 -1023. 故其偏置值為 1023. 階碼真值是 -1 的需要加1023 變成階碼表現(xiàn)值1022 轉(zhuǎn)化為2進(jìn)制填入階碼區(qū)域中.?

尾數(shù) 占 52 位, 填入規(guī)則和32位浮點(diǎn)數(shù)基本相同.?同樣, 需要規(guī)格化處理.

64 位 浮點(diǎn)數(shù) IEEE 格式要求

由于最終結(jié)果太長(zhǎng), 于是從右側(cè)開(kāi)始, 每四位一組, 將結(jié)果用16進(jìn)制表示.

總結(jié)

數(shù)據(jù)在存儲(chǔ)之前會(huì)用特定的編碼方式進(jìn)行編碼, 在存儲(chǔ)時(shí), 計(jì)算機(jī)根據(jù)數(shù)據(jù)類(lèi)型或者是根據(jù)數(shù)據(jù)本身的長(zhǎng)度, 將數(shù)據(jù)保存到內(nèi)存空間中, 如果需要, 將其進(jìn)行命名操作. 這樣得到的東西, 就是變量. 不同的數(shù)據(jù)表達(dá)的方式不同, 所以會(huì)有數(shù)據(jù)類(lèi)型的存在.

以上操作, 在C / C++ 內(nèi)部進(jìn)行處理, 外部需要提供的是這個(gè)變量存儲(chǔ)的數(shù)據(jù)類(lèi)型. 即可.

下一篇將針對(duì)C / C++ 描述幾種基本的數(shù)據(jù)類(lèi)型以及他們的書(shū)寫(xiě)方式, 包括相關(guān)關(guān)鍵字等內(nèi)容.

感謝各位的支持 !


C/C++ 從入門(mén)到入門(mén) 3 數(shù)據(jù)類(lèi)型(非編程語(yǔ)言向)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
烟台市| 镇平县| 紫金县| 长顺县| 禹城市| 乌兰县| 永州市| 西和县| 霍城县| 高碑店市| 突泉县| 开封市| 临泽县| 仁化县| 彝良县| 南澳县| 安龙县| 武功县| 定陶县| 朔州市| 青州市| 灵川县| 鹤山市| 南投县| 安福县| 航空| 永清县| 博白县| 黄浦区| 墨竹工卡县| 金昌市| 黎城县| 荔浦县| 海门市| 绥化市| 东港市| 丹棱县| 济源市| 余姚市| 贺兰县| 阿图什市|