<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          通過 Go 語(yǔ)言代碼理解大小端模式

          共 1479字,需瀏覽 3分鐘

           ·

          2020-08-24 07:53

          點(diǎn)擊上方藍(lán)色“Go語(yǔ)言中文網(wǎng)”關(guān)注我們,領(lǐng)全套Go資料,每天學(xué)習(xí)?Go?語(yǔ)言

          大端模式:是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址中,這樣的存儲(chǔ)模式有點(diǎn)兒類似于把數(shù)據(jù)當(dāng)作字符串的存儲(chǔ)順序處理。地址由小向大增加,而數(shù)據(jù)從高位往低位放;這和我們的閱讀習(xí)慣一致。

          小端模式:是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中,這種存儲(chǔ)模式將地址的高低和數(shù)據(jù)位權(quán)有效地結(jié)合起來,高地址部分權(quán)值高,低地址部分權(quán)值低。這樣的存儲(chǔ)模式有利于計(jì)算機(jī)處理數(shù)據(jù)。

          比如對(duì)于數(shù)據(jù):0x12345678,從高字節(jié)到低字節(jié)為:12345678,從低字節(jié)到高字節(jié)為:78563412。按照大端模式從低位 buf[0]到高位 buf[3]則應(yīng)該為:12, 34, 56, 78。按照小端模式從低位 buf[0]到高位 buf[3]則應(yīng)該為: 78,56,34,12。

          現(xiàn)在用代碼測(cè)試一下 go 語(yǔ)言是小端模式還是大端模式。

          package?main

          import?(
          ?"fmt"
          ?"unsafe"
          )

          func?main()?{
          ?var?i?int?=?0x12345678??????????????????//定義數(shù)據(jù)
          ?const?size?int?=?int(unsafe.Sizeof(i))??//獲取i的長(zhǎng)度,
          ?ps?:=?(*[size]byte)(unsafe.Pointer(&i))?//此處size必須為const類型,不然會(huì)報(bào)錯(cuò)

          ?fmt.Printf("%T\n",?ps)?//*[8]byte類型
          ?fmt.Println(*ps)???????//打印值
          ?//打印存儲(chǔ)地址
          ?fmt.Println(&ps[0])
          ?fmt.Println(&ps[1])
          ?fmt.Println(&ps[2])
          ?fmt.Println(&ps[3])
          ?if?ps[0]?==?0x78?{
          ??//小端模式則ps[0]低位存放的是低字節(jié)0x78,十進(jìn)制則為120,??滿足低位存放低字節(jié),????存儲(chǔ)為??0x78563412不利用閱讀,但方便計(jì)算機(jī)進(jìn)行運(yùn)算。
          ??fmt.Println("系統(tǒng)為小端模式")
          ?}?else?{
          ??//大端模式則ps[0]低位存放的是高字節(jié)12,十進(jìn)制為18,滿足低位存放高字節(jié),存儲(chǔ)為ox12345678,方便閱讀,但不方便計(jì)算機(jī)進(jìn)行運(yùn)算
          ??fmt.Println("系統(tǒng)為大端模式")
          ?}
          }

          運(yùn)行結(jié)果:

          *[8]uint8
          [120?86?52?18?0?0?0?0]
          0xc00000a0f8
          0xc00000a0f9
          0xc00000a0fa
          0xc00000a0fb

          系統(tǒng)為小端模式。

          總結(jié)

          go 語(yǔ)言底層實(shí)現(xiàn)的為小端模式,因?yàn)橛?jì)算機(jī)進(jìn)行計(jì)算時(shí),都是從低位開始進(jìn)行計(jì)算的,這樣計(jì)算效率比較高。而大端模式比較方便用戶閱讀,比較符合我們的閱讀習(xí)慣。

          本文作者:v824394795

          原文鏈接:https://blog.51cto.com/4075704/2521880


          推薦閱讀


          學(xué)習(xí)交流 Go 語(yǔ)言,掃碼回復(fù)「進(jìn)群」即可


          站長(zhǎng) polarisxu

          自己的原創(chuàng)文章

          不限于 Go 技術(shù)

          職場(chǎng)和創(chuàng)業(yè)經(jīng)驗(yàn)


          Go語(yǔ)言中文網(wǎng)

          每天為你

          分享 Go 知識(shí)

          Go愛好者值得關(guān)注


          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  婷婷伊人綜合中文字幕小说 | 精品一区二区三区四区五区六区七区八区 | 亚洲爆乳无码精品AAA片蜜桃 | 91ThePorn国产在线观看 | 精品久久久久成人片中文字幕 |