#微冷 #不太微卻很冷【大頭小頭,誰好用?】
大家週四好!+UR,再撐一下下周末就到啦。
說到周末,在台灣我們表達日期的方法是「今天是 2017 年 11 月 30 日星期四」。把大單位放前面,之後再一層一層標記越來越小的單位:年、月、日、時、分、秒。
就像我們把地址寫成[縣市]、[鄉鎮市區]、[村里]、路、段、巷、弄、號、樓、室、人名,邏輯是一樣的。
但在東亞以外的世界,日期與地址的寫法都得顛倒。慣例是從小單位寫起,例如今天的日期寫成: 30/11/2017,就是日、月、年 的格式。地址也一樣從收件人、室、樓、號、巷、段、路、區、市、州、國,這樣逐漸從小單位寫到大單位。
「可是我都念 IKEA。」「是是是,行了,謎之音你下去吧。」
我們東亞習慣的由大單位開始寫,叫做「大端式順序」(Big endian);相反的順序稱為「小端式順序」(Little endian)。
因為中文字「端」有頭的意思,例如「開端」就是開頭。所以其實叫「大頭優先」和「小頭優先」也無妨XDD
而且,考慮到這一對詞的由來,叫大頭和小頭其實更貼切。
你知道嗎?Endian 這個字的典故,來自十八世紀英國人強納生.綏夫特的諷刺名著《格列佛遊記》。描寫格列佛發現太平洋上某處的小島 Lilliput 住著一群有著先進社會的迷你小人。但是小人國的政治卻不太平靜,社會分成針鋒相對的兩派:
一方主張吃水煮蛋必須遵照先知的教誨,從小(尖)頭的一端敲開。另一方則堅持當初先知明明說水煮蛋必須從大(鈍)頭的一端敲開呀,先照顧小頭的明明都是異端!於是衍生出無盡的政爭、叛變、迫害、動亂......與勢如水火,彼此都認為自己絕對正確而對方絕對錯誤的兩派。
有那麼嚴重!不過是吃個蛋耶? #冷編吃茶葉蛋都亂敲。
綏夫特的小人國當然完全是在諷刺英國,而大頭與小頭派,自然是在暗指當時英國國內無止境相爭的新教和天主教。那時新教(英國國教)和天主教(法國、西班牙、愛爾蘭的主要信仰)之間的分歧,已經從單純的崇拜方式不同,升溫到彼此視對方為邪惡蠻橫、絕不能信任、簡直是吃人禽獸......總之是不共戴天的兩派。
而雙方實際上也一直透過政治和國際情勢彼此欉康。例如一方搞陰謀要用火藥炸毀國會以刺殺國王(就是V面具哥),另一方就以充公土地和剝奪參政權回敬。
先後讓十七世紀的英國政治體制翻天覆地的兩場革命:「英國內戰」(國王被斬首處決)和「光榮革命」(國王被放逐),根柢都是新教與天主教的衝突。
結論是當國王顏色正確很重要,搞錯了就會倒大楣。各位讀者若是當上國王,一定要特別留意,萬分小心呀!
在今日,堂堂的資訊時代,區分大頭派和小頭派這件事又變得很重要。不過這次不是吃蛋,或者信教的分別,而是和電腦的二進位信號有關。
話說二進位的每一個位元(關或開,0或1)代表某個2的N次方,在機器內與機器之間的傳輸,就必須先約定好每次傳送的一連串 00110111......究竟先傳的第一個位元代表最大的位元,或者是最小的。不然就會溝通失敗,全部都算錯啦。除非是遇到迴文數(palindrome),例如101,就沒有影響。
所以說......究竟是大頭還是小頭寫法比較好?
以現代電腦來說,只要架構與協定統一,兩者造成性能的差異據說極小。(不專業,歡迎指正!)
至於日期,我們就要來考慮資訊的重要程度順序了。是年份重要呢還是月日重要呢?
拿報紙為例,我們根據「它看起來新新的」不用想也知道年份不可能是咸豐二年,最可能是今年,頂多去年。因此年份前置,每次都得先讀它就顯得有點多餘。更何況讀者拿起一份報紙,通常最想知道的是「是禮拜幾的,有沒有週末娛樂版可以看」吧。
但,如果是老東西,尤其是記載著年限的各種契約,或是櫃子裡拿出的陳年餅乾,通常我們會想知道「過期沒?」,應該會先找年份,其次才是月份,最後才是日期,單位由大到小就很有邏輯。所以還是視情況而定,優先呈現讀者最需要的資訊囉。
說到日期的格式,讀者可能聽過這世界上有某個特立獨行的國家,他們覺得小頭和大頭都不好,應該要肚子(中...頭?)優先。因此他們的日期順序是月、日、年,寫作 Dec 30, 2017。這種寫法的傳統十分古老,在他們國家最重要的一份古老文件上就出現了
"In Congress, July 4, 1776.
The unanimous Declaration of the thirteen united States of America..."
對啦,這個奇葩國家剛好是在今日世界很有影響力的美國。所以日期才會出現又一種不太講理的「中端式順序」(Middle endian) #人家是霸權才不講道理 #AmericaFirst
話說回來,《獨立宣言》的日期七月四日卻是一個歷久的巨大謊言。實際上大部分代表是在八月份才簽署文件的喔。
今天雜七雜八冷知識就到這,波掰 by 科宅
=-- -= -- -=-- =-== =-=- === -=-- =--
「小雞表示:我也是從中間出來滴。我中ㄔ... (消音)」
圖片來源: EyeCandy (eyecandy.nanakaze.net/?p=459#)(CC-BY-NC-SA 2.5)
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「little endian big endian」的推薦目錄:
- 關於little endian big endian 在 每日一冷 Facebook 的最佳貼文
- 關於little endian big endian 在 コバにゃんチャンネル Youtube 的最佳解答
- 關於little endian big endian 在 大象中醫 Youtube 的最佳解答
- 關於little endian big endian 在 大象中醫 Youtube 的最佳貼文
- 關於little endian big endian 在 [問題] big-endian vs little-endian - 精華區C_and_CPP - 批踢踢 ... 的評價
- 關於little endian big endian 在 How do I convert between big-endian and little-endian values ... 的評價
- 關於little endian big endian 在 Big Endian vs Little Endian - Uy Nguyen 的評價
- 關於little endian big endian 在 Why EUi are in Little Endian and Keys in Big Endian #31 的評價
- 關於little endian big endian 在 What is the advantage of little endian format? - Software ... 的評價
little endian big endian 在 コバにゃんチャンネル Youtube 的最佳解答
little endian big endian 在 大象中醫 Youtube 的最佳解答
little endian big endian 在 大象中醫 Youtube 的最佳貼文
little endian big endian 在 How do I convert between big-endian and little-endian values ... 的推薦與評價
... <看更多>
相關內容
little endian big endian 在 Big Endian vs Little Endian - Uy Nguyen 的推薦與評價
The advantages of Big Endian and Little Endian in a computer architecture ... According to Wiki, Big endian is “the most common format in data ... ... <看更多>
little endian big endian 在 [問題] big-endian vs little-endian - 精華區C_and_CPP - 批踢踢 ... 的推薦與評價
網址: https://stackoverflow.com/questions/13926760/the-reason-behind-endianness
網址裡面有提到big跟little的優缺點,但小弟資質不良,無法完全理解,想請各位前輩開
釋
little-endian:
1. The little-endian system has the property that the same value can be read
from memory at different lengths without using different addresses
請問,at different lengths without using different addresses是什麼意思?
2. When adding or subtracting multi-byte numbers, the least significant byte
must be fetched first to see if there is a carryover to more significant
bytes. Because the least-significant byte is read first in little-endian
numbers, the system can parallelize and begin calculation on this byte while
fetching the following byte(s).
這一段我看得懂,大致上的意思是little-endian有辦法一邊fetch lower byte 一邊做計
算,如果是big-endian就必須全部fetch下來才可以做計算
big-endian:
1. it is simple to tell whether a number is positive or negative by simply
examining the bit at offset 0 in the lowest order byte.
這邊我也看得懂,big-endian的優點就是很容易比出兩個數字的大小。
2. binary digits are ordered as most people order base-10 digits. This is
advantageous performance-wise when converting from binary to decimal.
不懂,為什麼從2進制轉換成10進制會有performance-wise?
我認為不管是big還是little,轉成10進制的效能都是一樣的,只是big從MSB開始加,
little從LSB開始加
請各位指點迷津,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.76.103
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1524056539.A.B74.html
> -------------------------------------------------------------------------- <
作者: enonrick (EnonRick) 看板: C_and_CPP
標題: Re: [問題] big-endian vs little-endian
時間: Thu Apr 19 14:26:58 2018
※ 引述《zzss2003 (brotherD)》之銘言:
: 網址: https://stackoverflow.com/questions/13926760/the-reason-behind-endianness
: 網址裡面有提到big跟little的優缺點,但小弟資質不良,無法完全理解,想請各位前輩開
: 釋
: little-endian:
: 1. The little-endian system has the property that the same value can be read
: from memory at different lengths without using different addresses
value 4A in little-endian
char [4A]
short [4A 00]
int [4A 00 00 00]
long [4A 00 00 00 00 00 00 00]
可以節省記憶體
https://en.wikipedia.org/wiki/Endianness#Optimization
: 請問,at different lengths without using different addresses是什麼意思?
: 2. When adding or subtracting multi-byte numbers, the least significant byte
: must be fetched first to see if there is a carryover to more significant
: bytes. Because the least-significant byte is read first in little-endian
: numbers, the system can parallelize and begin calculation on this byte while
: fetching the following byte(s).
msb lsb
[010010101 10111010]
+[010001100 11100010]
---------------------
不用考慮進位借位問題讀完第一個 lsb byte 就可以算
: 這一段我看得懂,大致上的意思是little-endian有辦法一邊fetch lower byte 一邊做計
: 算,如果是big-endian就必須全部fetch下來才可以做計算
: big-endian:
: 1. it is simple to tell whether a number is positive or negative by simply
: examining the bit at offset 0 in the lowest order byte.
跟比大小無關
-1022
little-endian [00000010 11111100]
big-endian [11111100 00000010]
big endian 讀第1個bit就可以知道是正是負
: 這邊我也看得懂,big-endian的優點就是很容易比出兩個數字的大小。
: 2. binary digits are ordered as most people order base-10 digits. This is
: advantageous performance-wise when converting from binary to decimal.
: 不懂,為什麼從2進制轉換成10進制會有performance-wise?
: 我認為不管是big還是little,轉成10進制的效能都是一樣的,只是big從MSB開始加,
: little從LSB開始加
: 請各位指點迷津,謝謝
假設
int a = e;
&a = 0xa
0xa [000000000]
0xb [100101001]
0xc [100010011]
0xd [111101011]
不論little big 要讀 a 的值都會至 address 0xa 讀值
big直出 a->b->c->d 讀下去
little 就要先 offset後 再d->c->b->a
直覺上效能會比 big 慢,但這個差異可忽略
... <看更多>