日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

浅谈大端和小端

發布時間:2025/3/17 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈大端和小端 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  最近在看關于大端小端的問題首先請允許我引用一段

一、大端模式和小端模式的起源

? ? ? ? 關于大端小端名詞的由來,有一個有趣的故事,來自于Jonathan Swift的《格利佛游記》:Lilliput和Blefuscu這兩個強國在過去的36個月中一直在苦戰。戰爭的原因:大家都知道,吃雞蛋的時候,原始 的方法是打破雞蛋較大的一端,可以那時的皇帝的祖父由于小時侯吃雞蛋,按這種方法把手指弄破了,因此他的父親,就下令,命令所有的子民吃雞蛋的時候,必須 先打破雞蛋較小的一端,違令者重罰。然后老百姓對此法令極為反感,期間發生了多次叛亂,其中一個皇帝因此送命,另一個丟了王位,產生叛亂的原因就是另一個 國家Blefuscu的國王大臣煽動起來的,叛亂平息后,就逃到這個帝國避難。據估計,先后幾次有11000余人情愿死也不肯去打破雞蛋較小的端吃雞蛋。 這個其實諷刺當時英國和法國之間持續的沖突。Danny Cohen一位網絡協議的開創者,第一次使用這兩個術語指代字節順序,后來就被大家廣泛接受。

?

二、什么是大端和小端

  大端是將存儲數據的低位存放在高地址上,高位存放在低地址上,如int a= 0x12345678這個十六進制的數分為4份

0x12   0x34   0x56  0x78(數據的低位) 

低地址    ->      高地址

感覺像是字符串是存放方式"0x12345678" 是字符串依次存放

  小端是將數據的低位存放在低地址,高位存放在高地址上.如int a= 0x12345678這個十六進制的數分為4份

0x78(數據的低位)   0x56   0x34  0x12          //一開始我居然不知道十六進制的數據居然是從右往左

低地址    ->      高地址  

這類更加符合我們的邏輯思維,而且一般的*86的都是小端

編寫一個程序判斷

1

#include <stdio.h>
int main (void)
{
?? ?int a = 0x12345678;
?? ?int *c = a;
?? ?short *b = NULL;
?? ?b = (short *) c;
?? ?if (b == 0x5678)
?? ??? ?printf ("Big Endian\n");
?? ?else
?? ??? ?printf ("Little Endian\n");
?? ?return 0;
?? ??? ?
}
因為共用體union所有成員存放順序從低地址存放

#include <stdio.h>
union st
{
?? ?int a;
?? ?char b;
} s;
int main (void)
{
?? ?s.a = 0x1234;
?? ?if (s.b == 0x34)
?? ??? ?printf ("Llttle Endian!\n");
?? ?else
?? ??? ?printf ("Big Endian!\n");
?? ?return 0;
}

?

?

?

?

轉載于:https://www.cnblogs.com/tony1/p/3726678.html

總結

以上是生活随笔為你收集整理的浅谈大端和小端的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。