กำลังสองบิตต่อคำว่า "สะดวก" หรือไม่ ถ้าเป็นเช่นนั้นทำไม


11

ฉันพบหลายแหล่งที่อ้างว่า power-of-two บิตในคำไบนารี (เช่น 8 บิตต่อไบต์) เป็น "สิ่งที่ดี" หรือ "สะดวก" ฉันไม่พบแหล่งที่มาว่าทำไม

จากประวัติของทำไมไบต์เป็นแปดบิต? เราอ่านคำตอบที่ได้รับอนุมัติแล้ว:

คอมพิวเตอร์แบบไบนารี่กระตุ้นให้นักออกแบบสร้างพลังได้สองขนาด

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

ประโยคสุดท้ายเป็นเรื่องตลกหรือเปล่า? ไบต์ 12 บิตจะไม่สะดวกเพราะมันไม่ใช่พลังของ 2 - robjb

อีกครั้งเป็นโมฆะของเหตุผล ...

การคำนวณที่อยู่เป็นเรื่องง่ายกว่ามากด้วยพลังของ 2 และนับว่าเมื่อคุณสร้างตรรกะจากทรานซิสเตอร์ดิบในกระป๋องเล็ก ๆ - Mike

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

จากวิกิพีเดีย :

มาตรฐานความเป็นจริงของแปดบิตเป็นกำลังที่สะดวกสบายของสองอนุญาตให้ค่า 0 ถึง 255 สำหรับหนึ่งไบต์

และนี่จะสะดวกเพราะ ...

สำหรับการชี้แจงนี่เป็นจำนวนบิตต่อไบต์ (เช่น 8 หรือ 6 และอื่น ๆ ) ไม่ใช่จำนวนของค่าต่อไบต์ (เช่น 2 8หรือ 2 6ฯลฯ ) เนื่องจากความสับสนฉันยังชี้ให้เห็นว่านี่ไม่เกี่ยวกับขนาดของ Word

ฉันไม่สนใจเหตุผลทางประวัติศาสตร์มากเกินไป สิ่งเหล่านั้นได้รับการอธิบายอย่างดีจากที่อื่น (ดูลิงก์)


คำถามที่เกี่ยวข้องกับ SO: /programming/1606827/why-is-number-of-bits-always-a-power-of-two


2
@gnat ฉันค่อนข้างแน่ใจว่าเรากำลังพูดถึงจำนวนบิตต่อไบต์ (เช่น 8 ใน 8 บิต) ที่นี่ไม่ใช่จำนวนค่าที่ไบต์สามารถแทนได้ (เช่น 2 ^ 8 ใน 8 บิต) ตัวอย่างเช่นถ้าคุณมี 6 ไบต์ไบต์ 6 ไม่ใช่พลังของสองแต่ใช่ 6 ไบต์ไบต์สามารถแทนค่าสองจำนวน
8bittree

2
@ 8bittree ฉันคิดว่าฉันเข้าใจแล้วขอบคุณที่อธิบาย! (เพิกถอนการลงคะแนนซ้ำ - แม้ว่าฉันคิดว่ามันจะง่ายขึ้นสำหรับผู้อ่านถ้าคำอธิบายในความคิดเห็นล่าสุดของคุณจะถูกแก้ไขในคำถามสิ่งนี้ดูเหมือนค่อนข้างบอบบาง)
gnat

2
คำถามที่คล้ายกันเกี่ยวกับ SO: stackoverflow.com/q/1606827/3723423 - คำตอบทำให้เกิดข้อโต้แย้งที่น่าเชื่อถือเกี่ยวกับความสะดวกสบาย
Christophe

2
@Snowman: โพสต์ของ OP มี "การขอร้องคำถาม" การเข้าใจผิด: "ทำไมอำนาจของขนาดไบต์ที่สองจึงถือว่าสะดวก?" พวกเขาไม่ได้ มันไม่มีอะไรเกี่ยวข้องกับพลังของสองคน เขาอ่านประโยคผิดในบทความ Wikipedia
Robert Harvey

3
@RobertHarvey ในคำตอบของ "อะไรคือความเป็นมาว่าทำไม bytes ถึงแปดบิต?" (เชื่อมโยงกับคำถามของฉัน) มีประโยคต่อไปนี้: "คอมพิวเตอร์แบบไบนารีกระตุ้นให้นักออกแบบสร้างพลังขนาดสอง" ฉันทำผิดนี้ด้วยเหรอ? แหล่งข้อมูลทั้งสองหมายความว่าอย่างไรในความคิดเห็นของคุณ เพียงแค่พูดว่า "คุณเข้าใจผิด" ไม่ได้ทำเพื่อฉัน
Andreas

คำตอบ:


10

ฉันไม่คิดว่าไบต์ 8 บิตจะประสบความสำเร็จเพราะมีความกว้างซึ่งเป็นกำลังสอง หากคุณไม่ต้องการที่อยู่บิตเป็นรายบุคคล - และนั่นเป็นคุณสมบัติทั่วไปไม่ว่าตอนนี้หรือในอดีต - การมีพลังสองอย่างนั้นไม่มีความสำคัญในทางปฏิบัติจริง ๆ (เป็นเพียงแค่ - ตอนนี้เป็นมากกว่าในอดีตเมื่อประหยัด องค์ประกอบที่ไม่ต่อเนื่องบางอย่างมีความสำคัญ - การสะท้อนกลับสำหรับวิศวกรฮาร์ดแวร์และซอฟต์แวร์และการอยู่ในพื้นที่คุ้นเคยเป็นสิ่งสำคัญสำหรับวัตถุประสงค์อื่น ๆ ) และฉันจำไม่ได้ว่ามีการกล่าวถึงในประวัติการอ่านการคำนวณของฉัน (1) ต้องการตัวพิมพ์เล็กซึ่งหมายความว่ามีอะไรมากกว่าชุดอักขระ 6 บิตที่โดดเด่นแล้ว ASCII เป็น 7 บิต แต่ ASCII นั้นเป็นของการแลกเปลี่ยนระหว่างกัน (และจะแปลเป็นรหัสภายในสำหรับการจัดการ) และดังนั้น

Subcommmitee ตระหนักดีว่าผู้ผลิตคอมพิวเตอร์ไม่น่าจะออกแบบคอมพิวเตอร์ที่ใช้รหัส 7 บิตภายใน พวกเขามีแนวโน้มที่จะใช้รหัส 4 บิต 6 บิตและ 8 บิต ในปัจจุบันไม่มีความต้องการอย่างแพร่หลายสำหรับการแลกเปลี่ยนอักขระที่แยกกันและแตกต่างกันมากกว่า 128 ตัวระหว่างคอมพิวเตอร์และระหว่างคอมพิวเตอร์กับอุปกรณ์อินพุต / เอาท์พุตที่เกี่ยวข้อง [เทปกระดาษซึ่งมีขนาดเฟรมธรรมชาติ 8 บิต แต่จำเป็นต้องมีพาริตี้ดังนั้นน้ำหนักของเฟรมคือ 7 บิตก็อ้างเพื่อสนับสนุนถ่าน 7 บิตสำหรับ ASCII อำนาจของสองไม่ได้ถูกอ้างถึงในข้อดีของ 8 บิต ] (2)

และสำหรับฮาร์ดแวร์ที่ได้รับรางวัล 8 บิตจะได้รับอนุญาตให้แพ็ค 2 หลักในหนึ่งไบต์ในเวลาที่ 75% ของข้อมูลเป็นตัวเลขและแสดงใน BCD (3)

(1) ตัวอย่างเช่น Blaauw และบรูคส์สถาปัตยกรรมคอมพิวเตอร์ ; MacKenzie, ชุดอักขระที่เขียนแล้ว, ประวัติและการพัฒนามีทั้งการสนทนาในหัวข้อนั้น

(3) เอกสารของ X3.2 - subcommitee ที่รับผิดชอบ ASCII - อ้างโดย MacKenzie

(3) MacKenzie อีกครั้ง


1
ขอบคุณ. คำตอบของคุณคือจุดและคุณนำการอ้างอิง คุณมีคะแนนของฉัน ฉันรู้ว่าถ้าสิ่งที่คุณพูดนั้นเป็นความจริงมันก็เป็นไปไม่ได้ที่จะพิสูจน์ ไม่สามารถพิสูจน์สิ่งที่ไม่มีอยู่จริง ฉันเดาฉันควร interogate คนที่อ้างว่า "ความสะดวก" และตรวจสอบแหล่งที่มาของพวกเขา บางทีมันอาจเป็นเพียงข่าวลือที่แพร่หลาย
Andreas

ปัจจัยความมั่นใจอื่น ๆ คือไบต์สามารถแทนค่า easly เป็นค่าเลขฐานสิบหกสองค่า การใส่ทศนิยมสองดิจิตแบบไบนารี (BCD) ในหนึ่งไบต์มักถูกเรียกว่าทศนิยมที่บรรจุแล้ว นี่ถือว่าสะดวกเพราะทศนิยมสามารถอ่านได้ในรูปทศนิยมเมื่อมีการแสดงข้อมูลเป็นเลขฐานสิบหก
JimmyJames

ไบต์ 12 บิตสามารถแสดงได้อย่างง่ายดายเป็นค่าเลขฐานสิบหกสามค่า และคุณสามารถจัดเก็บหมายเลข BCD สามตัวในไบต์ 12 บิต แน่นอนว่าดีกว่าค่าเลขฐานสิบหกสองค่าและหมายเลข BCD สองค่า ที่จริงแล้วไบต์ 10 บิตสามารถมีทศนิยมได้สามหลัก และฉันคิดว่านั่นเป็นวิธีที่มาตรฐานทศนิยมทศนิยมของ IEEE ทำงาน
gnasher729

1
@ JimmyJames ฉันคิดว่าคุณจะได้รับ causality ที่ตรงกันข้ามกับเลขฐานสิบหก เลขฐานสิบหกกลายเป็นที่นิยมเพราะมันเป็นวิธีที่กะทัดรัดในการแทนไบต์ 8 บิตก่อนหน้านี้เลขฐานแปดได้รับความนิยมมากขึ้น (และเป็นที่นิยมมากขึ้นในเครื่องเช่น PDP-11 ซึ่งมี 8 บิตไบต์ ในการเข้ารหัสชุดคำสั่ง)
AProgrammer

@ gnasher729 ไบต์ 8 บิตเป็นลูกของยุค 60 การเปลี่ยนจากถ่าน 6 บิตเป็นถ่าน 12 บิตคิดไม่ถึงในยุค 60 แม้กระทั่งทุกวันนี้เมื่อเรามีข้อ จำกัด น้อยกว่า UTF-8 เป็นที่นิยมเพราะ UTF-16 ถือว่าสิ้นเปลืองเกินไป ไบต์ขนาด 10 บิตนั้นไม่สามารถคิดได้และการเข้ารหัสแบบเลขฐานสิบ 10 บิตต่อ 3 หลักนั้นก็ไม่ได้ผลเช่นกันเมื่อคุณทำการตรวจสอบค่าในรีจิสเตอร์และในหน่วยความจำด้วยแผงด้านหน้าโดยไม่พูดถึงผลกระทบต่อการนำเทคโนโลยีมาใช้
AProgrammer

2

นอกเหนือจากอุบัติเหตุในอดีตไม่มีเหตุผลใดที่ทำให้เราควรใช้ 8/16/32/64 บิต ฉันคิดว่า 12/24/48/96 บิตจะมีประโยชน์มากกว่าจริง ๆ

สำหรับการจัดการข้อความ Unicode ที่ใช้ UTF-24 สมมุติฐานจะมีราคาถูกกว่า UTF32 สมมุติ UTF-12 จะเก็บอักขระเดี่ยวและคู่ไบต์ UTF-8 ทั้งหมดใน 12 บิตและอักขระ UTF-8 ทั้งสามและสี่ทั้งหมดใน 24 บิต (ช่วงจะลดลงเล็กน้อยเป็น 2 ^ 20 อักขระ แต่นั่นก็ยังสี่ครั้ง มากกว่าที่ใช้อย่างไม่เห็นแก่ตัว); รหัสจะง่ายขึ้นเพราะมีเพียงสองรูปแบบ

สำหรับจุดลอยตัว 48 บิตก็เพียงพอแล้ว 96 บิตนั้นดีกว่าการขยาย 80 บิตอย่างมาก 24 บิตมีประโยชน์สำหรับกราฟิก มีประโยชน์มากกว่า 16 บิตที่การ์ดกราฟิกบางรุ่นรองรับ พอยน์เตอร์ 48 บิตสามารถจัดการ 256 เทราไบต์

เกี่ยวกับข้อเสียเพียงอย่างเดียวคือบิตเรย์ซึ่งการหารด้วย 12 จำเป็นต้องคำนวณตำแหน่งไบต์ หากรู้สึกว่ามีความสำคัญฉันก็มั่นใจว่าการหารด้วย 12 สามารถนำไปใช้งานได้อย่างมีประสิทธิภาพในฮาร์ดแวร์


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

1
ความคิดที่น่าสนใจ แต่ฉันไม่แน่ใจว่าสิ่งนี้ตอบคำถาม

1
คำถามคือ: "ทำไมแปดบิตถือว่าสะดวก" แน่นอนว่าคำว่า "ไม่ใช่" ตอบคำถาม
gnasher729

1
@ gnasher729 คำถามคือ: "ทำไมพลังงานของสองบิตต่อไบต์ถือว่าสะดวก" แม้ว่าคำตอบของคุณดูเหมือนจะใช้เช่นกัน
8bittree

2
ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
yannis

2

สิ่งนี้สะดวกเนื่องจากสถาปัตยกรรมฮาร์ดแวร์ทั่วไปที่ใช้หลายรายการ 8 เช่นสถาปัตยกรรม 32 บิตและ 64 บิต ซึ่งหมายความว่ามีประสิทธิภาพมากขึ้นเมื่อใช้ที่เก็บข้อมูลและการส่งข้อมูลแบบ 8 บิต

"อย่างไรก็ตามการพิจารณาถึงความประหยัดในการออกแบบก็ผลักดันให้มีขนาดเดียวหรือมีขนาดเล็กมากที่เกี่ยวข้องกับทวีคูณหรือเศษส่วน (ขนาดย่อย) เป็นขนาดหลักขนาดที่ต้องการกลายเป็นขนาดคำของสถาปัตยกรรม"

Word (สถาปัตยกรรมคอมพิวเตอร์)

ดูเพิ่มเติม: ประวัติของเหตุใดไบต์ถึงแปดบิตคืออะไร


5
ฉันจะไม่ยอมรับสิ่งนี้เป็นคำตอบ คำถามของฉันคือเหตุผลว่าทำไม power-of-two จึงสะดวกสบายไม่ใช่ว่าทำไมมาตรฐาน defacto ถึง 8 บิต และประวัติที่อยู่เบื้องหลัง 8-bit กล่าวถึง 5, 6 และ 7 บิตที่ใช้ด้วยเหตุผลจริงในขณะที่เพิ่มขึ้นจาก 7 เป็น 8 มีแรงจูงใจด้วย "meh ทำไมไม่" ฉันรู้สึกว่าการอ่านแหล่งพลังงานที่แตกต่างกันของสองมีมากกว่าความเข้ากันได้กับระบบปัจจุบัน (ในความเป็นจริงแล้วตัวละครขนาด 8 บิตมอบความเท่าเทียมกัน 8 บิต) Word เป็นสิ่งที่แตกต่างกันที่ฉันได้รับประโยชน์จากขนาดที่มีพลังของสองขนาดนั่นคือการเปลี่ยนสามารถใช้แทนการคำนวณแบบหลากหลาย
Andreas

3
@RobertHarvey คำถามนี้ไม่ได้เกี่ยวกับจำนวนสถานะต่อสวิตช์ (เช่นไบนารี vs trinary หรือมากกว่า) มันเกี่ยวกับจำนวนสวิตช์ที่รวมกลุ่มกัน ดูการแก้ไขคำถามของฉัน
8bittree

2
สำหรับการแก้ไขของคุณไม่มีความแตกต่างที่มีความหมายระหว่างจำนวนบิตต่อไบต์และจำนวนค่าต่อไบต์ มันเป็นสองวิธีในการแสดงสิ่งเดียวกัน จำนวนของค่าที่ถือไบต์สามารถดังต่อไปนี้โดยตรงจากจำนวนบิตจะมี: ไบต์มี 8 2⁸-1บิตและเพื่อที่จะสามารถเก็บค่าได้ถึง
Robert Harvey

2
ตามหลักเหตุผลแล้วคุณจะเลือกขนาดของไบต์ที่สามารถเก็บช่วงตัวเลขที่สะดวกได้ ASCII คือ 7 บิตเนื่องจากให้ค่าที่แตกต่างกัน 128 ค่าเพียงพอที่จะเข้ารหัสทั้งสองกรณีของตัวอักษรโรมันอักขระตัวเลขเครื่องหมายวรรคตอนอักขระควบคุมและอักขระพิเศษต่าง ๆ ไบต์สามารถเก็บได้ 7 บิต ASCII และหนึ่งพาริตี้หนึ่งบิตสำหรับการตรวจสอบข้อผิดพลาดรวม 8 บิตเหมาะสำหรับโทรพิมพ์ เราใช้ขนาดนั้นเป็นจำนวนไบต์นับ แต่นั้นมา
Robert Harvey

2
@ JeremyKato อุปกรณ์ที่ฉันกล่าวถึงนั้นเก่ากว่า (ยุค 60 - 80 ส่วนใหญ่) ซึ่งอาจเป็นเหตุผลว่าทำไมคุณไม่คุ้นเคยกับมัน ASCII เป็นจริงการเข้ารหัส 7 บิต (ความเท่าเทียมกันไม่ได้เป็นส่วนหนึ่งของมาตรฐาน) แต่สำหรับส่วนหลักของความคิดเห็นของคุณไม่ฉันไม่ได้หายไปอะไร ฉันเข้าใจว่ามีเหตุผลว่าทำไม 8 บิตจึงสะดวกสบายเป็นพิเศษสิ่งที่คุณและ Robert Harvey หายไปคือคำถามนั้นถามถึงพลังของ 2 บิตโดยทั่วไปไม่ใช่เฉพาะ 8 บิต
8bittree

1

ตามบทความของ Wikipedia สำหรับคำนี้ทำให้การคำนวณที่เกี่ยวข้องกับการจัดการกับหน่วยความจำง่ายขึ้นอย่างมีนัยสำคัญ:

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


2
ใช่กำลังสองเท่าของไบต์ ไม่มีเหตุผลโดยธรรมชาติว่าทำไมไบต์ควรมีแปดบิตและไม่ใช่เก้าสิบสองหรือสิบห้า
gnasher729

@ gnasher729 ง่ายกว่ามากในการหารด้วย 8 (หรือ 16 หรือ 32 หรือ 64) มากกว่าการหารด้วย 9 หรือ 12 หรือ 15
robert bristow-johnson

@ gnasher729 ถ้า word เป็น power-of-2 bits และ power-of-2 bytes นี่ก็หมายความว่า byte จะต้องเป็น power-of-2 bits
vartec

@vartec บทความและคำพูดพูดว่า "ขนาดที่ใช้กันทั่วไปมักจะมีอำนาจของสองหน่วยของการแก้ปัญหาที่อยู่ (ไบต์หรือคำ)" และ "การออกแบบคอมพิวเตอร์ที่ทันสมัยที่สุดมีขนาดคำ (และขนาดตัวถูกดำเนินการอื่น ๆ ) ที่มีอำนาจ สองเท่าของขนาดของไบต์ " ฉันอ่าน "ขนาดคำ" วัดเป็นไบต์ไม่ใช่บิต ไม่มีกฎเกี่ยวกับขนาดของคำในบิตเป็นหรือควรเป็น powers-of-2 ในบทความ
Andreas

@vartec: IF เห็นได้ชัดว่าไม่มีใครจะสร้างเครื่องที่มีคำ 32 บิตและ 12 บิตไบต์ แต่ไม่มีอะไรพูดกับเครื่องที่มี 48 หรือ 96 บิตและ 12 บิต และมีเครื่องจักรที่มีคำหนึ่งคำสิบไบต์
gnasher729

0

มันเกี่ยวข้องอย่างแน่นหนากับพื้นที่ที่อยู่ โดยการเพิ่มที่อยู่บัสของคุณอีกหนึ่งบิตคุณสามารถระบุตำแหน่งหน่วยความจำได้มากเป็นสองเท่า ดังนั้นเมื่อคุณเพิ่มบรรทัดพิเศษนั้นคุณอาจใช้มันเพื่อขยายเต็ม

สิ่งนี้นำไปสู่ความก้าวหน้าตามธรรมชาติของ 1, 2, 4, 8, 16, 32 และอื่น ๆ

ในระดับเทคนิคการผลิตมันเป็นเรื่องง่ายที่จะทำซ้ำรูปแบบการพิมพ์หินเดียวกัน นั่นคือเพื่อเป็นสองเท่า หากคุณเริ่มด้วยหนึ่งสลักแล้วจึงเพิ่มลวดลายเป็นสองเท่าคุณจะผ่าน 8 ไม่ใช่ 6, 10 หรือ 12


1
ที่เกี่ยวข้องกับจำนวนบิตในไบต์? คุณอ้างอย่างจริงจังว่า 32- บิตแบบตรรกะและง่ายกว่าที่จะนำมาใช้มากกว่า 36 หรือ 28 บิต?
gnasher729

1
ฉันไม่ได้ทำการเรียกร้องใด ๆ ข้อเสนอแนะของฉันคือมันเกิดจากการออกแบบก่อนหน้านี้ที่ขยายอย่างต่อเนื่องใน widrh เนื่องจากทรานซิสเตอร์มีราคาถูกกว่าและวงจรรวมที่ได้รับอนุญาตสำหรับวงจรขนาดเล็ก
Martin Maat

1
ทฤษฎีที่น่าสนใจเกี่ยวกับระดับเทคนิคการผลิต คุณอาจจะมีบางอย่าง คุณสามารถขยายย่อหน้าหรืออาจมีลิงก์อธิบายพื้นฐานหรือไม่
Andreas

1
มันไร้สาระ ตัวอย่างเช่นในกราฟิกการ์ดที่ต้องการขนาดบิตแปลก ๆ ทุกชนิดในสถานที่ต่าง ๆ ทุกอย่างจะทำอย่างถูกต้องตามขนาดที่ต้องการและไม่มากกว่าหนึ่งบิต หากตัวถอดรหัส h.264 ต้องการความแม่นยำ 19 บิตสำหรับการดำเนินการบางอย่างฮาร์ดแวร์จะใช้ 19 บิตและไม่ใช่ 20 หรือ 24 หรือ 32 และขอโทษด้วยคุณไม่ต้องจัดการกับรูปแบบการพิมพ์หิน คุณกำหนดฮาร์ดแวร์และเรียกใช้ผ่านซอฟต์แวร์บางตัวที่สร้างเลย์เอาต์
gnasher729

1
@MartinMaat: คุณสับสนทางการตลาด + มาตรฐานด้วยเหตุผลทางเทคโนโลยี และเทคโนโลยีคือสิ่งที่เรากำลังพูดถึง
gnasher729

0

ความกว้างของคำคือพลังสองอย่างไม่เสมอไป ฉันเพิ่งได้ทำการเข้ารหัสใน SHArC DSP ที่มีความกว้างของคำ 32 บิตสำหรับตัวเลขแต่ไม่ใช่สำหรับ opcodes (ซึ่งมีความกว้าง 48 บิต)

อาจเป็นเหตุผลว่าทำไมความกว้างของคำคือพลังของสองเป็นเพราะคำแนะนำบางอย่างที่ทดสอบ (หรือตั้งค่าหรือล้างหรือสลับ) บิตเดียวหรือเปลี่ยน (หรือหมุน) ซ้ายหรือขวาตามจำนวนบิตที่ระบุ มีฟิลด์บิตใน opcode เพื่อระบุตำแหน่งของบิตเดียวหรือจำนวนบิตที่จะเลื่อน หากความกว้างของคำคือกำลังสองฟิลด์บิตนี้ต้องใช้บิตล็อก2 (word_width) บิตเพื่อครอบคลุมทั้งคำ นั่นคือคำที่กว้าง 32 บิตต้องการฟิลด์ 5 บิตใน opcode สำหรับการดำเนินการเหล่านี้ หากคำว่ากว้าง 33 บิตจะต้องมี 6 มิฉะนั้นจะไม่สามารถครอบคลุมทั้งคำได้ แต่จะเป็นเช่นนั้นหากคำนั้นกว้าง 64 บิต

บิตใน opcode มีค่าอย่างมากดังนั้นพวกเขาจึงไม่ต้องการให้มันเสียเปล่า จากนั้นมันก็สมเหตุสมผลที่จะทำให้คำนั้นมีความกว้าง 2 อัน

เหตุผลไบต์มีความกว้าง 8 บิตคือมันเป็นพลังที่เล็กที่สุดของสองที่สามารถเก็บอักขระ ASCII (ซึ่งเป็น 7 บิต)


นี่ไม่ใช่พื้นที่ของความเชี่ยวชาญของฉัน แต่ดูเหมือนเหตุผลที่ถูกต้องสำหรับพลังของสองไบต์และขนาดคำ ฉันคิดว่าคุณต้องกังวลเรื่อง UB น้อยลงเช่นกัน สำหรับ shift 33 บิตต้องใช้ opcode 6 บิต แต่เพียงประมาณครึ่งหนึ่งของค่าที่เป็นไปได้ (0-32) มีความหมายที่เป็นประโยชน์ คุณเห็นด้วยไหม
Andreas

opcode ต้องกว้างกว่าฟิลด์ bit ที่จำเป็นสำหรับการนับกะ ไบต์ไม่มีอะไรอื่นนอกจากคำที่ 8 บิต เหตุผลที่ฮาร์ดแวร์คอมพิวเตอร์มีแนวโน้มที่จะใช้ขนาดคำที่ 8 หรือ 16 หรือ 32 หรือ 64 บิต (ไม่ใช่ทุกกรณี DSP56000 เก่ามีคำ 24 บิต) เป็นเพราะเหตุผลที่ฉันให้ไว้ข้างต้นและเหตุผลที่กำหนดโดย vartec : กำหนดบิตแมปของคำที่บรรจุและคุณจะได้รับหมายเลขแถวและคอลัมน์ของพิกเซลเฉพาะหนึ่งจะต้องแบ่งจำนวนคอลัมน์ตามความกว้างของคำว่ารู้ว่าคำใดที่จะเข้าถึงการทดสอบหรือเปลี่ยนพิกเซล การหารด้วยกำลัง 2 เป็นเรื่องง่าย
เบิร์ตบริสโต - จอห์นสัน

"บิตแมปของคำที่รวบรวม" คืออะไร? HighColor เหมาะกับคำอธิบายนั้นหรือไม่?
Andreas

@ robertbristow-johnson: การขาดจินตนาการโดยรวม ด้วย 9 บิตไบต์เราจะใช้คำ 36 บิต, 130 ล้านสีแทน 16 ล้านสีใน RGBA, RGB666 แทน RGB555 หรือ RGB565 สุดขั้วสำหรับสีคุณภาพต่ำและทุกอย่างก็ดี และ ASCII จะรวมตัวอักษร 512 ตัวจนถึง Latin Extended
gnasher729

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