มีกลอุบายใด ๆ ในการจดจำความแตกต่างระหว่างคนหนุ่มใหญ่กับคนเล็กหรือไม่?


13

ฉันไม่ได้ทำงานทุกวันกับปัญหาที่ยิ่งใหญ่และปัญหาเล็ก ๆ น้อย ๆ และดังนั้นฉันจึงพบว่ายากที่จะจำได้ว่าอันไหนคืออะไร

เมื่อเร็ว ๆ นี้ฉันได้รับการสัมภาษณ์ถามถึงความแตกต่างระหว่างสองคนนี้ เนื่องจากฉันจำไม่ได้ว่าฉันตัดสินใจ "เดา" (โอกาส 50% หลังจากทั้งหมด) แต่ฉันล้มเหลว

ดังนั้นมีกลวิธี pratical ที่รู้จักกันดีในการจดจำความแตกต่างระหว่าง endian ใหญ่และ endian น้อยหรือไม่


10
ฉันผอมคุณจะดีกว่าที่ระบุสิ่งที่ endianess และบอกว่าคุณไม่สามารถจำได้ว่าวิธีรอบมันเป็นดังนั้นคุณมักจะ google
jk

ฉันก็มีปัญหาในการจดจำและมีกลวิธี mnemotechnic ที่สร้างความสับสนมากเกินไป ความช่วยเหลือที่เชื่อถือได้ของฉันคือการโยนendiannessสะกดใน google เพื่อที่ฉันจะได้รับบทความวิกิพีเดีย
mouviciel

3
ตลกเรื่องบังเอิญ - ฉันสะดุดเท่านั้นที่ลิงค์นี้ในวันนี้และมันเป็นเรื่องที่น่าแปลกใจที่เกี่ยวข้องcommandcenter.blogspot.com/2012/04/byte-order-fallacy.html
ไม่เป็นไร

@ ไม่เป็นไรฉันหยุดอ่านบทความนั้นหลังจากย่อหน้าที่สอง "สิ่งที่น่าสนใจสำหรับนักเขียนคอมไพเลอร์และผู้ที่ต้องจัดการกับหน่วยความจำที่แมปกับการลงทะเบียน" นอกจากความจริงที่ว่านั่นเป็นประโยคพา ธ ของสวนที่น่ากลัวมันบอกเป็นนัยว่ารหัสที่เกี่ยวกับการลงทะเบียนเป็นกรณีที่เป็นขอบ ลองใช้คอมพิวเตอร์บางครั้งโดยไม่มีไดรเวอร์อุปกรณ์
dodgethesteamroller

คำตอบ:


14

ฉันคิดเสมอว่ามันถูกกำหนดไว้ในทางที่ผิดและนั่นก็เป็นเคล็ดลับในการจดจำ ในฐานะที่เป็นผู้พูดภาษาอังกฤษที่ไม่ใช่เจ้าของภาษาฉันเห็นว่า "จุดสิ้นสุด" ตรงข้ามกับ "เริ่มต้น" (แม้ว่าจะเห็นได้ชัดว่า "จุดสิ้นสุด" อาจหมายถึงจุดสิ้นสุด - จุดเริ่มต้นหรือจุดสิ้นสุด) อย่างไรก็ตามฉันเพิ่งจำได้ว่า "มันถูกวิธีที่ผิด" :)

  • ในขนาดใหญ่endianมากที่สุดอย่างมีนัยสำคัญ (ใหญ่ที่สุด) ไบต์อยู่ในจุดเริ่มต้น
  • ในน้อยendianน้อยอย่างมีนัยสำคัญ (Littlest) ไบต์อยู่ในจุดเริ่มต้น

หรืออ้างถึงendianness บิต :

  • 128 64 32 16 8 4 4 1 1 เป็น endian ใหญ่เพราะมันจบลงที่เล็ก
  • 1 2 4 8 16 32 32 64 128 เป็น endian เล็ก ๆ น้อย ๆ เพราะมันจะใหญ่

แม้ว่าการใช้คำว่าendiannessตามปกติจะหมายถึงวิธีการเรียงลำดับไบต์ภายในคำ แต่ความหมายทั่วไปของคำนั้นหมายถึงการเรียงลำดับของส่วนประกอบย่อยที่สามารถระบุตำแหน่งแต่ละส่วนได้ภายในการแสดงรายการข้อมูลขนาดใหญ่ ( ดังอธิบายใน Wikipedia )


5
อ่า แต่คนเล็ก ๆ ในกลุ่มเล็ก ๆ เริ่มต้น (แตก) ไข่ของพวกเขาที่จุดจบเล็ก ๆ น้อย ๆ ดังนั้นจึงเป็นวิธีที่ถูกต้องรอบ
jk

4
-1: Endian-ness อ้างถึงไบต์ภายในคำไม่ใช่บิตภายในไบต์
kdgregory

1
@kdgregory - ในที่สุดการกำหนดหมายเลขบิตจะได้รับผลกระทบภายในคำ คุณได้ลอง struct-field ที่สอดคล้องกับ endians ต่าง ๆ หรือไม่? ฉันยอมรับว่าคำตอบนั้นผิด
mouviciel

@Kdgregory: ตามที่วิกิพีเดีย , endianness หมายถึงการสั่งซื้อของแอดเดรสส่วนประกอบย่อยภายในตัวแทนของรายการข้อมูลที่มีขนาดใหญ่ นั่นเป็นกรณีทั่วไป นอกจากนี้ยังมีความคิดของendianness บิต คุณพูดถูกอยู่แล้วว่าการใช้ endianness โดยทั่วไปนั้นหมายถึงการเรียงลำดับไบต์ภายในหนึ่งคำและตัวอย่างของฉันก็ยอมรับว่าไม่สะท้อนให้เห็น แทนที่ตัวอย่างแรกด้วยเคสทั่วไป
Joonas Pulakka

2
@kdgregory: ตั้งแต่เมื่อไหร่จะมีฮาร์ดแวร์ที่จำเป็นในการพิสูจน์แนวคิดเชิงทฤษฎีของ CS? แต่ดีมาก: 8051มีการลงทะเบียนบิตที่อยู่ ภาษา Ada อนุญาตให้ระบุลำดับบิตที่เหมาะสมสำหรับการแสดงชนิดข้อมูล ( pdf ) ลำดับการส่งของบิตบนสื่อที่เป็นอนุกรมของหลักสูตรจำเป็นต้องกำหนดบิต endianness ความจริงที่ว่าการใช้งานปกติของ "endianness" หมายถึงกรณีพิเศษ (ไบต์ในคำ) ไม่ได้ทำให้ความหมายทั่วไปของโมฆะ
Joonas Pulakka

33

เคล็ดลับของฉัน:

  • big endian = ท้ายสุดก่อน! (ไบต์แรก (ที่อยู่ต่ำที่สุด) คือ MSB)
  • little endian = จุดจบเล็กน้อยก่อน! (ไบต์แรก (ที่อยู่ต่ำที่สุด) คือ LSB)

3
ใช่นี่คือวิธีที่ฉันคิด: Big Endian "เริ่มต้นที่จุดจบใหญ่" ในขณะที่ Little Endian "เริ่มต้นที่ปลายเล็ก" มันเหมือนกับไม้เบสบอลมีสองปลายของไม้หนึ่งมีขนาดใหญ่อีกปลายหนึ่งมีขนาดเล็ก มันไม่ใช่แนวคิดที่ยากนัก
เชนคิลเคลลี่

6

วิธีที่ดีที่สุดในการจดจำสิ่งนี้คือผู้คนที่มีอารยธรรมแสวงหาความหลากหลายดังนั้นจึงกินไข่ของพวกเขาต่างจากที่พวกเขาสั่งหมายเลข ในขณะที่เราเขียนเลขทศนิยมเริ่มต้นที่ตัวใหญ่ตัวแรก (ตัวเอนด์ใหญ่) เรากินไข่ต้มอ่อน ๆ จากเอนด์ตัวเล็ก (เอนด์น้อย)


1
คำตอบนี้ส่วนใหญ่ไม่ใช่ทางเทคนิค แต่ก็แม่นยำและทำให้ฉันหัวเราะ ทำได้ดีมาก

6

หมายเลข Big-endian เริ่มต้นที่ "big end" เลขตัวน้อยเริ่มต้นที่ "จุดจบเล็กน้อย"

ทั้งสองเป็นการพาดพิงถึงปัญหาที่จะเริ่มกินไข่ของคุณตามการเดินทางของกัลลิเวอร์

ในกรณีนี้ "สิ้นสุด" ไม่ตรงข้ามกับการเริ่มต้นมันหมายถึงสุดขีดใด ๆ ของ (เชือก | สตริง | หมายเลข | ลำดับ) ดังนั้นพวกเขาจึงไม่ถูกเรียกว่า ตรงกันข้ามกับ "เริ่มต้น")


จริง และวิธีที่ง่ายที่สุด (และสนุกที่สุด) ในการจดจำคือการไปและอ่านการเดินทางของกัลลิเวอร์ ฉันรับประกันคุณจะไม่มีวันลืมซึ่งเป็นอีกครั้ง!
จูลส์

คุณควรใส่ "เริ่มกิน" เป็นตัวหนา (เช่น 72 พอยต์ <กะพริบตา) นั่นคือเหตุผลทั้งหมดสำหรับความสับสนทั้งหมดที่นี่
T Nierath

2

วิธีที่ง่ายที่สุดที่ฉันจำได้คือเปลี่ยนคำว่า "endian" เป็น "startian" จำนวนเต็ม startian ใหญ่เริ่มต้นด้วยปลายใหญ่ (เช่นไบต์ที่สำคัญที่สุดมาก่อน) และจำนวนเต็ม startian น้อยเริ่มต้นด้วยปลายเล็ก (เช่นไบต์ที่สำคัญน้อยที่สุดมาก่อน)


รู้สึกอิสระที่จะออกเสียง startian ในฐานะ/'stɑːr.ʃən/หรือ/'stɑːr.ti.ən/ (เว้นเครื่องหมาย / r / สำหรับการเน้นเสียงที่ไม่ใช่แบบ rhotic)
dreamlax

มันค่อนข้างฉลาดและจดจำได้ง่าย
Coldblackice

1

ฉันไม่สามารถจำได้ว่าเป็น "big-endian" และซึ่งเป็น "little-endian" แต่รู้ถึง endianness ของโปรเซสเซอร์ PowerPC และ Intel x86 Little มีตัวอักษรส่วนใหญ่ที่เหมือนกันกับ Intel ดังนั้น Intel x86 จึงเป็น end-little

แน่นอนว่ามีประโยชน์เฉพาะเมื่อคุณทราบลำดับไบต์ของ PPC และ x86 ในทางกลับกันคุณควรจำไว้ว่า Intel x86 = little-endian และจำไว้ว่า x86 และ ARM นั้นเข้ากันได้ดีมากแม้จะมีชุดคำสั่งต่างกันโดยสิ้นเชิง


1

ฉันจะใช้วิธีนี้: ใหญ่สวย!

ใหญ่ == สวยงาม == ขวา
endianess ที่ถูกต้องคือสิ่งที่คุณสามารถอ่านใน hexdump ซึ่งเป็นสิ่งที่ทำให้ไบต์ที่สำคัญที่สุดเป็นอันดับแรกเช่นเดียวกับมนุษย์ที่มีสติสัมปชัญญะ

== น่าเกลียดเล็กน้อย == ผิดเล็กน้อย
hexdumps ที่ผลิตโดย endianess นี้เป็นเพียงผิดธรรมดาที่คุณวิ่งหนีกรีดร้อง "สมอง!" บางทีนี่อาจเป็นสิ่งที่น่ารังเกียจของมนุษย์ต่างดาวเราสามารถคาดเดาถึงต้นกำเนิดของความโหดร้ายนี้ได้ อย่างไรก็ตามมันมีอยู่และเราติดอยู่กับมัน

พิลึกมันไม่ได้เป็นตัวแปรที่ดีที่สุดที่ทำให้การแข่งขัน ...


Little == ugly == wrong... "แม้แต่คนที่เล็กที่สุดก็สามารถเปลี่ยนเส้นทางแห่งอนาคต" -Galadrial, LOTR
Coldblackice

-1

ในใหญ่ endian: (เรียงลำดับ)

ต่ำไปสูงคือ

0 | 1 | 2 | 3 ^ ^ เริ่มสิ้นสุด

ใน Little-Endian: (เรียงจากมากไปน้อย)

สูงไปต่ำ

กล่าวคือ

3 | 2 | 1 | 0 ^ ^ เริ่มต้นสิ้นสุด


1
คำถามที่ถามถึงเคล็ดลับการปฏิบัติที่จะจำได้ว่าอันไหน
gnasher729
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.