在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++編程中整型數(shù)據(jù)在內(nèi)存中存儲(chǔ)是怎么樣的

C語(yǔ)言編程基礎(chǔ) ? 來(lái)源:C語(yǔ)言編程學(xué)習(xí)基地 ? 作者:C語(yǔ)言編程 ? 2021-09-01 15:22 ? 次閱讀

1.整型的歸類

char

short

int

long

以上都分為有符號(hào)(signed)與無(wú)符號(hào)(unsigned)的類型

2.原碼、反碼和補(bǔ)碼

2.1 定義

計(jì)算機(jī)在表示一個(gè)數(shù)字時(shí),是采用二進(jìn)制的方式,所以為了準(zhǔn)確表示一個(gè)數(shù)的正負(fù),每一個(gè)有符號(hào)數(shù)都將其最高位視作是符號(hào)位,最高位為0表示正數(shù),最高位為1表示負(fù)數(shù)。我們接下來(lái)以有符號(hào)整型int的數(shù)字進(jìn)行分析。

一個(gè)有符號(hào)整數(shù)由 符號(hào)位 + 數(shù)值位 組成,數(shù)值位是其最高位,分別以0/1表示正/負(fù)

對(duì)于正數(shù)來(lái)說(shuō),反碼補(bǔ)碼都與原碼相同;

對(duì)于負(fù)數(shù)來(lái)說(shuō),符合以下3條規(guī)則:

原碼:將十進(jìn)制數(shù)字直接翻譯為二進(jìn)制數(shù)

反碼:原碼的符號(hào)位不變,其他位按位取反

補(bǔ)碼:反碼+1

而對(duì)于整型來(lái)說(shuō),整型在內(nèi)存中實(shí)際上是以補(bǔ)碼的形式進(jìn)行存儲(chǔ)的。

2.2 補(bǔ)碼的意義

有的同學(xué)可能就會(huì)問(wèn)了,為什么計(jì)算機(jī)要發(fā)展出原碼、反碼、補(bǔ)碼這么多種碼呢?

這就與計(jì)算機(jī)對(duì)于整數(shù)的運(yùn)算有關(guān)了。

CPU只有加法器,減法在運(yùn)算時(shí)也會(huì)被視作一個(gè)數(shù)加另一個(gè)負(fù)數(shù)。考慮到整數(shù)的最高位是符號(hào)位,兩個(gè)整數(shù)中若包含負(fù)數(shù),以原碼直接相加得到的數(shù)一定是不對(duì)的。所以問(wèn)題就變成了如何使得運(yùn)算簡(jiǎn)單而精確,既要處理符號(hào)位,又要只進(jìn)行加法運(yùn)算,達(dá)到以某一種二進(jìn)制形式的“碼”直接相加就能得到正確結(jié)果。

下面,我們以60+(-18)為例,分別用原碼、反碼、補(bǔ)碼直接進(jìn)行二進(jìn)制的運(yùn)算。

原碼運(yùn)算:

00000000 00000000 00000000 00111100( 60的原碼)+ 10000000 00000000 00000000 00010010(-18的原碼)-------------------------------------------10000000 00000000 00000000 01001110(某個(gè)數(shù)的原碼)

顯然,得到了的原碼轉(zhuǎn)化為10進(jìn)制是-78,并非正確答案42。

反碼運(yùn)算:

00000000 00000000 00000000 00111100( 60的反碼)+ 11111111 11111111 11111111 11101101(-18的反碼)-------------------------------------------100000000 00000000 00000000 00101001 截取后32位: 00000000 00000000 00000000 00101001(某個(gè)數(shù)的反碼)

顯然,得到了的反碼轉(zhuǎn)化為10進(jìn)制原碼是41,并非正確答案42,但是只與正確答案相差(+1),于是,我們就想將負(fù)數(shù)的反碼+1,即變成“補(bǔ)碼”來(lái)進(jìn)行運(yùn)算,而又正數(shù)的補(bǔ)碼是原碼本身,這時(shí)候我們看看會(huì)怎么樣呢?

補(bǔ)碼運(yùn)算:

00000000 00000000 00000000 00111100( 60的補(bǔ)碼)+ 11111111 11111111 11111111 11101110(-18的反碼)-------------------------------------------100000000 00000000 00000000 00101010 截取后32位: 00000000 00000000 00000000 00101010(某個(gè)數(shù)的補(bǔ)碼)

顯然,得到了的補(bǔ)碼轉(zhuǎn)化為10進(jìn)制原碼是42,我們得到了正確結(jié)果。

2.3 結(jié)論

綜上,我們發(fā)現(xiàn),只要將兩個(gè)整數(shù)使用補(bǔ)碼進(jìn)行運(yùn)算,就不需要考慮它們的符號(hào)位了,將它們的所有位直接簡(jiǎn)單相加即可,就能得到正確的結(jié)果。

2.4* 負(fù)數(shù)二進(jìn)制補(bǔ)碼的快速轉(zhuǎn)化

對(duì)于char類型整數(shù),-1用二進(jìn)制補(bǔ)碼表示為

當(dāng)我們已知一個(gè)負(fù)數(shù)的二進(jìn)制補(bǔ)碼時(shí),用比這個(gè)數(shù)多一位的、最高位為1、其他位全0、這里應(yīng)為9位的二進(jìn)制數(shù)

直接減去-1的二進(jìn)制補(bǔ)碼得

得到的數(shù)就是十進(jìn)制(-1)的絕對(duì)值,也就是1,只要加上負(fù)號(hào),就能快速得到這個(gè)負(fù)數(shù)二進(jìn)制補(bǔ)碼的十進(jìn)制原碼。

原理十分簡(jiǎn)單,一個(gè)負(fù)數(shù)的 原碼加上補(bǔ)碼 = 原碼+反碼+1 = 所有二進(jìn)制位全1再加1 = 多一位的、最高位為1、其他位全0

3. 大小端字節(jié)序

3.1 什么是大小端

在內(nèi)存中,數(shù)據(jù)的大小端存儲(chǔ)是在 字節(jié) 尺度上進(jìn)行討論的

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

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

3.2 為什么有大端和小端之分

在計(jì)算機(jī)系統(tǒng)中,我們通常是以字節(jié)為單位存儲(chǔ)數(shù)據(jù)的,每個(gè)地址對(duì)應(yīng)一個(gè)字節(jié)。

一個(gè)字節(jié)為8bit,但是在C語(yǔ)言中除了8bit的char之外,還有16bit的short,32bit的int。另外,對(duì)于位數(shù)大于8位的處理器,例如16位和32位的處理器,由于寄存器寬度大于一個(gè)字節(jié),那么必然存在著如何將多個(gè)字節(jié)安排的問(wèn)題。這邊導(dǎo)致了大小端存儲(chǔ)模式的誕生。

我們以int類型的數(shù) 0x01ff4218 為例(兩個(gè)十六進(jìn)制位即為1個(gè)字節(jié)),看一下在大小端下這4個(gè)字節(jié)分別是如何分配的

3.3 寫(xiě)一段代碼來(lái)判斷你的機(jī)器的大小端字節(jié)序

算法簡(jiǎn)單概括:截取4個(gè)字節(jié)大小的int整型的1個(gè)字節(jié)的低位。若機(jī)器為大端字節(jié)序,該字節(jié)存儲(chǔ)0x00;若機(jī)器為小端字節(jié)序,該字節(jié)存儲(chǔ)0x01;

#include《stdio.h》//實(shí)現(xiàn)方法1int check1(){ int i = 1; return *(char*)&i;}

//實(shí)現(xiàn)方法2int check2(){ union check { int i; char c; }ch = {1}; return ch.c;}

int main(){ int ret = check1(); if (ret == 1) { printf(“小端

”); } else { printf(“大端

”); } return 0;}

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7067

    瀏覽量

    89125
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3620

    瀏覽量

    93785
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2110

    瀏覽量

    73688

原文標(biāo)題:C/C++編程知識(shí):整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)!講解+示例

文章出處:【微信號(hào):xx-cyy,微信公眾號(hào):C語(yǔ)言編程基礎(chǔ)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    EE-112:模擬C++的類實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《EE-112:模擬C++的類實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 01-03 15:15 ?0次下載
    EE-112:模擬<b class='flag-5'>C++</b><b class='flag-5'>中</b>的類實(shí)現(xiàn)

    C語(yǔ)言和C++結(jié)構(gòu)體的區(qū)別

    同樣是結(jié)構(gòu)體,看看在C語(yǔ)言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?247次閱讀

    內(nèi)存儲(chǔ)器主要用來(lái)存儲(chǔ)什么

    器的主要功能 數(shù)據(jù)存儲(chǔ)內(nèi)存儲(chǔ)器用于存儲(chǔ)CPU需要直接訪問(wèn)的數(shù)據(jù),這些數(shù)據(jù)可能是程序代碼、用戶
    的頭像 發(fā)表于 10-14 09:55 ?857次閱讀

    使用OpenVINO GenAI API在C++構(gòu)建AI應(yīng)用程序

    許多桌面應(yīng)用程序是使用 C++ 開(kāi)發(fā)的,而將生成式AI(GenAI)功能集成到這些應(yīng)用程序可能會(huì)很具有挑戰(zhàn)性,尤其是因?yàn)槭褂孟?Hugging Face 這樣的 Python 庫(kù)的復(fù)雜性。C++
    的頭像 發(fā)表于 10-12 09:36 ?392次閱讀
    使用OpenVINO GenAI API在<b class='flag-5'>C++</b><b class='flag-5'>中</b>構(gòu)建AI應(yīng)用程序

    ostream在c++的用法

    ostream 是 C++ 標(biāo)準(zhǔn)庫(kù)中一個(gè)非常重要的類,它位于 頭文件(實(shí)際上,更常見(jiàn)的是通過(guò)包含 頭文件來(lái)間接包含 ,因?yàn)?包含了 和 )。 ostream 類及其派生類(如 std::cout
    的頭像 發(fā)表于 09-20 15:11 ?761次閱讀

    C++實(shí)現(xiàn)類似instanceof的方法

    函數(shù),可實(shí)際上C++沒(méi)有。但是別著急,其實(shí)C++中有兩種簡(jiǎn)單的方法可以實(shí)現(xiàn)類似Java的instanceof的功能。 在 C++
    的頭像 發(fā)表于 07-18 10:16 ?607次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>中</b>實(shí)現(xiàn)類似instanceof的方法

    淺談C語(yǔ)言內(nèi)存分區(qū)和STM32存儲(chǔ)器分配

    RAM是與CPU直接交換數(shù)據(jù)的內(nèi)部存儲(chǔ)器,也叫主存(內(nèi)存)。 它可以隨時(shí)讀寫(xiě),而且速度很快,通常作為操作系統(tǒng)或其他正在運(yùn)行的程序的臨時(shí)數(shù)據(jù)
    的頭像 發(fā)表于 04-02 09:50 ?1372次閱讀
    淺談<b class='flag-5'>C</b>語(yǔ)言<b class='flag-5'>內(nèi)存</b>分區(qū)和STM32<b class='flag-5'>存儲(chǔ)</b>器分配

    使用 MISRA C++:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤

    在前兩篇博客,我們?向您介紹了新的 MISRA C++ 標(biāo)準(zhǔn)?和?C++ 的歷史?。在這篇博客,我們將仔細(xì)研究以 C++
    的頭像 發(fā)表于 03-28 13:53 ?817次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤

    C語(yǔ)言內(nèi)存泄漏問(wèn)題原理

    內(nèi)存泄漏問(wèn)題只有在使用堆內(nèi)存的時(shí)候才會(huì)出現(xiàn),棧內(nèi)存不存在內(nèi)存泄漏問(wèn)題,因?yàn)闂?b class='flag-5'>內(nèi)存會(huì)自動(dòng)分配和釋放。C
    發(fā)表于 03-19 11:38 ?531次閱讀
    <b class='flag-5'>C</b>語(yǔ)言<b class='flag-5'>內(nèi)存</b>泄漏問(wèn)題原理

    C程序可用的存儲(chǔ)類有哪些?

    register 存儲(chǔ)類用于定義存儲(chǔ)在寄存器而不是 RAM 的局部變量。這意味著變量的最大尺寸等于寄存器的大小(通常是一個(gè)詞),且不能對(duì)它應(yīng)用一元的 '&' 運(yùn)
    發(fā)表于 03-15 12:32 ?386次閱讀

    美國(guó)政府呼吁開(kāi)發(fā)人員使用內(nèi)存安全編程語(yǔ)言

    所謂內(nèi)存安全,即是防止程序在處理內(nèi)存時(shí)產(chǎn)生如緩沖區(qū)溢出以及懸停指針等潛在漏洞。因此,盡管Java憑借其內(nèi)存安全模式,不受此類問(wèn)題影響,但C及其變異體
    的頭像 發(fā)表于 02-29 14:40 ?803次閱讀

    數(shù)組和鏈表在內(nèi)存的區(qū)別 數(shù)組和鏈表的優(yōu)缺點(diǎn)

    數(shù)組和鏈表在內(nèi)存的區(qū)別 數(shù)組和鏈表的優(yōu)缺點(diǎn)? 數(shù)組和鏈表是常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),用于組織和存儲(chǔ)數(shù)據(jù)。它們在內(nèi)
    的頭像 發(fā)表于 02-21 11:30 ?1057次閱讀

    c語(yǔ)言,c++,java,python區(qū)別

    C語(yǔ)言、C++、Java和Python是四種常見(jiàn)的編程語(yǔ)言,各有優(yōu)點(diǎn)和特點(diǎn)。 C語(yǔ)言: C語(yǔ)言是一種面向過(guò)程的
    的頭像 發(fā)表于 02-05 14:11 ?2442次閱讀

    vb語(yǔ)言和c++語(yǔ)言的區(qū)別

    VB語(yǔ)言和C++語(yǔ)言是兩種不同的編程語(yǔ)言,雖然它們都屬于高級(jí)編程語(yǔ)言,但在設(shè)計(jì)和用途上有很多區(qū)別。下面將詳細(xì)比較VB語(yǔ)言和C++語(yǔ)言的區(qū)別。 設(shè)計(jì)目標(biāo): VB語(yǔ)言(Visual Bas
    的頭像 發(fā)表于 02-01 10:20 ?2370次閱讀

    C++簡(jiǎn)史:C++是如何開(kāi)始的

    的 MISRA C++:2023 博客系列的第二部分。 在這篇博客,我們將深入探討 C++ 的歷史、編程語(yǔ)言多年來(lái)的發(fā)展歷程以及它的下一步發(fā)展方向。
    的頭像 發(fā)表于 01-11 09:00 ?617次閱讀
    <b class='flag-5'>C++</b>簡(jiǎn)史:<b class='flag-5'>C++</b>是如何開(kāi)始的
    主站蜘蛛池模板: 色黄网站| 精品午夜视频| 四虎影视网站| 天天操天天搞| 黄色视屏在线免费观看| 四虎欧美在线观看免费| 特级一级毛片| 亚洲精品黄色| 黄网站色视频大全免费观看| 三级欧美在线| 奇米影视第四色7777| 不卡精品国产_亚洲人成在线 | 天天爽夜夜爽精品视频一| 国精视频一区二区视频| 美女黄色毛片免费看| 色婷婷激婷婷深爱五月老司机| 在线欧美色| 国产精品久久久久久久人热| 久久精品网站免费观看| 日本免费不卡视频一区二区三区| 免费观看黄视频网站| 色偷偷亚洲天堂| 伊人精品久久久大香线蕉99| a视频网站| 在线观看你懂得| 色偷偷免费| 欧美视频综合| 情久久| 色媚网| 黄色大片日本| 国产精品日本亚洲777| 精品三级在线观看| 韩国三级理在线视频观看| bt在线www天堂资源网| 爱爱动态视频免费视频| 天堂中文在线资源库用| 久久精品国产亚洲aa| 国产精品福利久久2020| 超级乱淫小黄文小说| 国产高清免费午夜在线视频| 国产美女久久久久|