chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

經(jīng)常聽(tīng)說(shuō)字節(jié)對(duì)齊,那什么是對(duì)齊?

學(xué)益得智能硬件 ? 來(lái)源:學(xué)益得智能硬件 ? 2023-01-31 15:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在計(jì)算結(jié)構(gòu)體長(zhǎng)度的時(shí)候,我們經(jīng)常聽(tīng)說(shuō)字節(jié)對(duì)齊。那什么是對(duì)齊?
如果一個(gè)變量在內(nèi)存中的地址正好是它長(zhǎng)度的整數(shù)倍,我們就稱它為自然對(duì)齊。
比如在32位的操作系統(tǒng)中,如果一個(gè)整型變量的地址是0x04,那么它就是自然對(duì)齊。
3b05c184-a07b-11ed-bfe3-dac502259ad0.png而且操作系統(tǒng)也確實(shí)是這么做的,隨便定義一個(gè)整型變量,打印它的地址,結(jié)果一定是4的倍數(shù)。
int main()
{
int num;
printf("%p
", &num);
return 0;
}
這樣做的根本原因還是為了提高CPU的訪問(wèn)效率。如果一個(gè)整型變量存放在0x02地址上,那么CPU首先會(huì)讀取兩個(gè)字節(jié)的short,再讀取后面的兩個(gè)字節(jié),最后把兩個(gè)部分合成一個(gè)整數(shù),很顯然這樣的效率會(huì)比較低。
3b15559a-a07b-11ed-bfe3-dac502259ad0.png ?有了這個(gè)基礎(chǔ),我們?cè)賮?lái)計(jì)算結(jié)構(gòu)體的長(zhǎng)度,就會(huì)簡(jiǎn)單的多。
struct Test
{
    char ch;
    int num;
    short id;
charc;
};
比如這個(gè)結(jié)構(gòu),char類(lèi)型占一個(gè)字節(jié),int占四個(gè)字節(jié),但是num不能直接跟在ch的后面,否則num的地址肯定不是4的整數(shù)倍,所以需要在ch的后面空3個(gè)字節(jié)。
3b256cc8-a07b-11ed-bfe3-dac502259ad0.png
接下來(lái)輪到id,在32位系統(tǒng)中short占2個(gè)字節(jié),直接跟在num的后面就行。

3b401352-a07b-11ed-bfe3-dac502259ad0.png

最后一個(gè)是c,因?yàn)橹徽家粋€(gè)字節(jié),所以直接放在最后就好。

3b50104a-a07b-11ed-bfe3-dac502259ad0.png ?那結(jié)構(gòu)體的長(zhǎng)度是不是11個(gè)字節(jié)呢,不是的,結(jié)構(gòu)體的長(zhǎng)度一定是最長(zhǎng)成員的整數(shù)倍,所以在c的后面還空了一個(gè)字節(jié),結(jié)構(gòu)體一共占了12字節(jié)。
記住幾個(gè)原則。
一、結(jié)構(gòu)體變量的首地址是最長(zhǎng)成員長(zhǎng)度的整數(shù)倍。比如我們計(jì)算的這個(gè)結(jié)構(gòu)體,它的首地址一定是4的整數(shù)倍。
二、每個(gè)成員相對(duì)結(jié)構(gòu)體首地址的偏移量,一定是該成員長(zhǎng)度的整數(shù)倍。
三、結(jié)構(gòu)體的總長(zhǎng)度是最長(zhǎng)成員長(zhǎng)度的整數(shù)倍。


四、如果結(jié)構(gòu)體內(nèi)有成員長(zhǎng)度大于處理器的位數(shù),那么就以處理器的位數(shù)作為對(duì)齊單位,比如在32位操作系統(tǒng)中,double占8字節(jié),我們還是按照4字節(jié)為對(duì)齊單位。

3b5fe326-a07b-11ed-bfe3-dac502259ad0.png

審核編輯 :李倩


聲明:本文內(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)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7380

    瀏覽量

    129012
  • 字節(jié)
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    14354
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    615

    瀏覽量

    29435

原文標(biāo)題:字節(jié)對(duì)齊

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    LAT1185+一個(gè)地址未對(duì)齊引起的 HardFault 異常應(yīng)用筆記

    ,則程序運(yùn)行正常。表面上看,這似乎是 KEIL MDK 的問(wèn)題,通過(guò)分析,導(dǎo)致這個(gè)問(wèn)題的本質(zhì)原因是內(nèi)存地址沒(méi)有對(duì)齊引起的,下面章節(jié)將詳細(xì)分析該問(wèn)題的來(lái)龍去脈以及解決方法。
    發(fā)表于 01-11 17:28 ?0次下載

    CW32操作FLASH地址對(duì)齊的要求

    地址邊界對(duì)齊,即使用 16bit 位寬訪問(wèn) FLASH 時(shí)的地址必須是偶地址,使用 32bit 位寬時(shí)的地址必須是 4 的倍數(shù)地址。 正確地址對(duì)齊的代碼示例: 8bit 讀?。?tempdata
    發(fā)表于 12-15 06:30

    摩爾線程新一代大語(yǔ)言模型對(duì)齊框架URPO入選AAAI 2026

    近日,摩爾線程在人工智能前沿領(lǐng)域取得重要突破,其提出的新一代大語(yǔ)言模型對(duì)齊框架——URPO統(tǒng)一獎(jiǎng)勵(lì)與策略優(yōu)化,相關(guān)研究論文已被人工智能領(lǐng)域的國(guó)際頂級(jí)學(xué)術(shù)會(huì)議AAAI 2026收錄。這一成果標(biāo)志著摩爾線程在大模型基礎(chǔ)技術(shù)探索上邁出了關(guān)鍵一步,為簡(jiǎn)化大模型訓(xùn)練流程、突破模型性能上限提供了全新的技術(shù)路徑。
    的頭像 發(fā)表于 11-17 16:03 ?390次閱讀
    摩爾線程新一代大語(yǔ)言模型<b class='flag-5'>對(duì)齊</b>框架URPO入選AAAI 2026

    MDK uVision V5.36.00使用rt_packed進(jìn)行字節(jié)對(duì)齊,但無(wú)效,為什么?

    各位RTT專(zhuān)家好: MDK uVision V5.36.00使用rt_packed進(jìn)行字節(jié)對(duì)齊,但無(wú)效。
    發(fā)表于 09-24 06:37

    TC334 uart dma發(fā)送數(shù)據(jù)時(shí),只能發(fā)送17個(gè)字節(jié),怎么解決?

    具體情況:配置串口發(fā)送,具體配置情況如下,對(duì)于17字節(jié)內(nèi)的數(shù)據(jù)包能夠正常發(fā)送,大于17字節(jié)的數(shù)據(jù)包只能發(fā)送前17字節(jié)。(已做好字節(jié)對(duì)齊) 請(qǐng)
    發(fā)表于 08-04 07:18

    伺服電機(jī)編碼器與轉(zhuǎn)子磁極相位對(duì)齊方法

    永磁交流伺服電機(jī)的編碼器相位為何要與轉(zhuǎn)子磁極相位對(duì)齊 其唯一目的就是要達(dá)成矢量控制的目標(biāo),使 d 軸勵(lì)磁分量和 q 軸出力分量解耦,令永磁交流伺服電機(jī)定子繞組產(chǎn)生的電磁場(chǎng)始終正交于轉(zhuǎn)子永磁場(chǎng),從而
    發(fā)表于 05-14 16:00

    Allegro Skill布局功能--器件絲印過(guò)孔對(duì)齊介紹與演示

    Allegro系統(tǒng)雖然提供了基本的元件對(duì)齊功能,但其適用范圍較為有限。相比之下,F(xiàn)anyskill 的“對(duì)齊”命令在操作體驗(yàn)和功能性上更具優(yōu)勢(shì):其界面設(shè)計(jì)更加直觀易用,并支持多種元素的對(duì)齊操作,包括
    發(fā)表于 05-14 08:59 ?2742次閱讀
    Allegro Skill布局功能--器件絲印過(guò)孔<b class='flag-5'>對(duì)齊</b>介紹與演示

    彈性布局 (Flex) 提供更加有效的方式對(duì)容器中的子元素進(jìn)行排列、對(duì)齊和分配剩余空間

    彈性布局 (Flex) 彈性布局(Flex)提供更加有效的方式對(duì)容器中的子元素進(jìn)行排列、對(duì)齊和分配剩余空間。常用于頁(yè)面頭部導(dǎo)航欄的均勻分布、頁(yè)面框架的搭建、多行數(shù)據(jù)的排列等。 布局方向 在彈性
    發(fā)表于 04-30 07:54

    PCB布局太亂? Altium Designer這個(gè)快捷鍵幫你一秒對(duì)齊全場(chǎng)

    在做PCB設(shè)計(jì)的時(shí)候,你是否也遇到過(guò)這種情況: 器件擺好但總感覺(jué)歪歪扭扭? 有些元件間距不一致,看著難受? 想對(duì)齊又一個(gè)個(gè)拖動(dòng),累得不行? 別急!今天教你一招? Altium Designer 里
    的頭像 發(fā)表于 04-14 09:09 ?4628次閱讀
    PCB布局太亂? Altium Designer這個(gè)快捷鍵幫你一秒<b class='flag-5'>對(duì)齊</b>全場(chǎng)

    圖解邊沿對(duì)齊,中心對(duì)齊PWM(可下載)

    在說(shuō)邊沿對(duì)齊,中心對(duì)齊前,我們先來(lái)段鋪墊,PWM 又稱脈沖寬度調(diào)制,我們通過(guò)調(diào) 節(jié)脈沖的占空比,我們可以控制電壓的大小(比如我們滿占空比時(shí)電壓為 12V,我們可以通 過(guò)調(diào)節(jié)占空比讓電壓變?yōu)?7V
    發(fā)表于 03-31 15:15 ?1次下載

    伺服電機(jī)編碼器與轉(zhuǎn)子磁極相位對(duì)齊方法

    永磁交流伺服電機(jī)的編碼器相位為何要與轉(zhuǎn)子磁極相位對(duì)齊,其唯一目的就是要達(dá)成矢量控制的目標(biāo),使 d 軸勵(lì)磁分量和 q 軸出力分量解耦,令永磁交流伺服電機(jī)定子繞組產(chǎn)生的電磁場(chǎng)始終正交于轉(zhuǎn)子永磁場(chǎng),從而
    發(fā)表于 03-03 01:58

    Gerber文件中元件與焊接無(wú)法對(duì)齊

    同一塊板子,轉(zhuǎn)換成Gerber文件后,進(jìn)行DFM分析時(shí),元件無(wú)法與焊接對(duì)齊,導(dǎo)致全部貼片元件報(bào)錯(cuò)。如果直接采用AD源文件進(jìn)行DFM分析則不會(huì)出現(xiàn)。
    發(fā)表于 02-19 09:02

    Orcad繪制原理圖的元器件對(duì)齊方法

    在使用Orcad軟件繪制原理圖的時(shí)候,為了使原理圖繪制的美觀一些,有時(shí)候也希望像PCB設(shè)計(jì)一樣,將所有的器件都進(jìn)行對(duì)齊,這里我們給大家介紹下,原理圖器件對(duì)齊的方法,方便大家在原理圖設(shè)計(jì)的時(shí)候也可以將元器件進(jìn)行對(duì)齊。
    的頭像 發(fā)表于 02-07 10:33 ?2920次閱讀
    Orcad繪制原理圖的元器件<b class='flag-5'>對(duì)齊</b>方法

    如何保證電平轉(zhuǎn)換前后數(shù)據(jù)的相位對(duì)齊

    請(qǐng)教各位TI的技術(shù)人員一個(gè)問(wèn)題 數(shù)據(jù)經(jīng)過(guò)電平轉(zhuǎn)換芯片是會(huì)產(chǎn)生延遲的 對(duì)于多通道電平轉(zhuǎn)換芯片,由于延時(shí)的存在,不同通道間的延時(shí)是不一樣的,同相位的信號(hào)經(jīng)過(guò)轉(zhuǎn)換后不同通道的輸出信號(hào)的相位可能不同,請(qǐng)問(wèn)一下如何保證不同通道間的輸出相位對(duì)齊? 謝謝
    發(fā)表于 02-05 06:16

    關(guān)于tlk2201數(shù)據(jù)對(duì)齊問(wèn)題求解

    最近在調(diào)tlk2201,10bit位寬,tbi模式。目前的進(jìn)度如下:如果發(fā)射端不發(fā)k28.5,接收端syncen拉低,是無(wú)法對(duì)齊的。td0-td9隨機(jī)對(duì)應(yīng)rd0-rd9。這樣不行,所以拉高
    發(fā)表于 01-23 06:26