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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

經常聽說字節對齊,那什么是對齊?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2023-01-31 15:24 ? 次閱讀
在計算結構體長度的時候,我們經常聽說字節對齊。那什么是對齊?
如果一個變量在內存中的地址正好是它長度的整數倍,我們就稱它為自然對齊。
比如在32位的操作系統中,如果一個整型變量的地址是0x04,那么它就是自然對齊。
3b05c184-a07b-11ed-bfe3-dac502259ad0.png而且操作系統也確實是這么做的,隨便定義一個整型變量,打印它的地址,結果一定是4的倍數。
int main()
{
int num;
printf("%p
", &num);
return 0;
}
這樣做的根本原因還是為了提高CPU的訪問效率。如果一個整型變量存放在0x02地址上,那么CPU首先會讀取兩個字節的short,再讀取后面的兩個字節,最后把兩個部分合成一個整數,很顯然這樣的效率會比較低。
3b15559a-a07b-11ed-bfe3-dac502259ad0.png ?有了這個基礎,我們再來計算結構體的長度,就會簡單的多。
struct Test
{
    char ch;
    int num;
    short id;
charc;
};
比如這個結構,char類型占一個字節,int占四個字節,但是num不能直接跟在ch的后面,否則num的地址肯定不是4的整數倍,所以需要在ch的后面空3個字節。
3b256cc8-a07b-11ed-bfe3-dac502259ad0.png
接下來輪到id,在32位系統中short占2個字節,直接跟在num的后面就行。

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

最后一個是c,因為只占一個字節,所以直接放在最后就好。

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


四、如果結構體內有成員長度大于處理器的位數,那么就以處理器的位數作為對齊單位,比如在32位操作系統中,double占8字節,我們還是按照4字節為對齊單位。

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

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作系統
    +關注

    關注

    37

    文章

    7114

    瀏覽量

    125155
  • 字節
    +關注

    關注

    0

    文章

    42

    瀏覽量

    14069
  • 變量
    +關注

    關注

    0

    文章

    614

    瀏覽量

    28865

原文標題:字節對齊

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    伺服電機編碼器與轉子磁極相位對齊方法

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

    Allegro Skill布局功能--器件絲印過孔對齊介紹與演示

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

    PCB布局太亂? Altium Designer這個快捷鍵幫你一秒對齊全場

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

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

    在說邊沿對齊,中心對齊前,我們先來段鋪墊,PWM 又稱脈沖寬度調制,我們通過調 節脈沖的占空比,我們可以控制電壓的大小(比如我們滿占空比時電壓為 12V,我們可以通 過調節占空比讓電壓變為 7V
    發表于 03-31 15:15 ?0次下載

    Gerber文件中元件與焊接無法對齊

    同一塊板子,轉換成Gerber文件后,進行DFM分析時,元件無法與焊接對齊,導致全部貼片元件報錯。如果直接采用AD源文件進行DFM分析則不會出現。
    發表于 02-19 09:02

    Orcad繪制原理圖的元器件對齊方法

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

    如何保證電平轉換前后數據的相位對齊?

    請教各位TI的技術人員一個問題 數據經過電平轉換芯片是會產生延遲的 對于多通道電平轉換芯片,由于延時的存在,不同通道間的延時是不一樣的,同相位的信號經過轉換后不同通道的輸出信號的相位可能不同,請問一下如何保證不同通道間的輸出相位對齊? 謝謝
    發表于 02-05 06:16

    關于tlk2201數據對齊問題求解

    最近在調tlk2201,10bit位寬,tbi模式。目前的進度如下:如果發射端不發k28.5,接收端syncen拉低,是無法對齊的。td0-td9隨機對應rd0-rd9。這樣不行,所以拉高
    發表于 01-23 06:26

    求助,TLK10002低速側兩路數據對齊的疑問求解

    實際測試tlk10002過程中發現,在開始“同步期間”,也就是tlk10002發送TI專有同步碼的過程中,收到的兩路同步碼是對齊的,數據間沒有byte錯位。然而,在同步碼之后的正常數據,對于兩通
    發表于 01-10 06:04

    KiCad的對齊工具不好用?

    兩個以上對象 時,才可以在右鍵的菜單中找到它的身影: 如何使用對齊菜單? 經常有小伙伴抱怨 KiCad 的對齊的效果很隨機,沒有辦法按照意圖進行對齊操作。真實情況是 KiCad 在執行
    的頭像 發表于 12-04 18:15 ?1090次閱讀
    KiCad的<b class='flag-5'>對齊</b>工具不好用?

    請問ADC12D1600的DCLK可以選擇與RCLK的相位嚴格對齊嗎?

    我選擇的芯片是ADC12D1600RF,因為輸出數據時鐘DCLK是4分頻的,而DAC那邊也是4分頻時鐘,因此兩個時鐘有可能有相位差。我想要通過將DA的數據時鐘輸給RCLK來對齊ADC的DCLK可行
    發表于 11-29 09:35

    ARM嵌入式系統中內存對齊的重要性

    做嵌入式系統軟件開發,經常在代碼中看到各種各樣的對齊,很多時候我們都是知其然不知其所以然,知道要做好各種對齊,但是不明白為什么要對齊,不對齊
    的頭像 發表于 11-11 17:17 ?1603次閱讀
    ARM嵌入式系統中內存<b class='flag-5'>對齊</b>的重要性

    I2S有左對齊,右對齊跟標準的I2S三種格式,那么這三種格式各有什么優點呢?

    大家好,關于I2S格式,有兩個疑問請教一下 我們知道I2S有左對齊,右對齊跟標準的I2S三種格式,那么這三種格式各有什么優點呢? 而且對于標準的I2S格式,32FS傳輸16bit的數據,48fs傳輸24bit的數據,最低位會移動到右聲道,是否意味著該數據被丟棄了?還是有
    發表于 10-21 08:23

    請問cc3200 i2s怎么設置左對齊或者右對齊模式?

    CC3200 手冊 swru367中有提到i2s支持左對齊或者右對齊,但是在sdk提供的api中沒有找到如何設置,請問哪位高人知道,請指點一下,謝謝
    發表于 10-21 07:08

    三相三電平逆變器的中心對齊SVPWM實現

    電子發燒友網站提供《三相三電平逆變器的中心對齊SVPWM實現.pdf》資料免費下載
    發表于 10-12 11:25 ?0次下載
    三相三電平逆變器的中心<b class='flag-5'>對齊</b>SVPWM實現
    主站蜘蛛池模板: 视频在线观看一区二区三区 | 在线干 | 日韩一级片在线免费观看 | 亚洲一区二区在线 | 你懂的在线视频播放 | 特黄特色视频 | 国产xxxx极品bbw视色 | 中国特黄一级片 | 五月婷婷激情综合网 | 欧美成人一区亚洲一区 | 午夜丁香婷婷 | 黄色片视频网 | 求毛片网站 | 伊人久久大香线蕉电影院 | 黄视频免费在线观看 | 午夜视频播放 | 黄色毛片儿| 视频h在线观看 | 中文字幕精品一区二区三区视频 | 九九九精品 | 六月丁香婷婷综合 | 天天碰天天干 | 伊人久久影视 | 久久婷婷丁香 | 天天爽天天爽 | 色偷偷尼玛图亚洲综合 | 国模私拍在线视频 | 中文日产国产精品久久 | 免费边摸边吃奶边叫床视频gif | 毛片毛片毛片毛片毛片毛片 | 日本欧美一区二区三区不卡视频 | 国内精品哆啪啪 | 一级一级一片免费高清 | 亚洲狠狠97婷婷综合久久久久 | 丝袜美腿一区 | 综合伊人 | 国产午夜在线视频 | 手机在线观看视频你懂的 | 午夜传媒 | 天天做天天爱天天爽综合网 | 欧美色影视 |