Google Play badge

เอสกี


ASCII: คอมพิวเตอร์จัดเก็บตัวอักษรและสัญลักษณ์อย่างไร

ความคิดที่ยิ่งใหญ่

คอมพิวเตอร์ใช้ตัวเลข มนุษย์ใช้ตัวอักษรและสัญลักษณ์ เราต้องการสะพานเชื่อม ASCII ก็คือสะพานเชื่อมนั้น ASCII เปลี่ยนตัวอักษรหรือสัญลักษณ์แต่ละตัวให้เป็นตัวเลข คอมพิวเตอร์จะเก็บตัวเลขไว้ เมื่อเราอ่าน คอมพิวเตอร์จะแสดงตัวอักษรนั้นอีกครั้ง นี่คือวิธีที่ข้อความทำงานในหลายไฟล์และแอปพลิเคชัน

ทำไมคอมพิวเตอร์จึงต้องการโค้ด

คอมพิวเตอร์ทำงานด้วยไฟฟ้า โดยมองเห็นสองสถานะ คือ เปิด และ ปิด เราเรียกสถานะเหล่านี้ว่า บิต บิตคือ 0 หรือ 1 เมื่อนำบิตจำนวนมากมารวมกันจะได้ตัวเลขที่ใหญ่ขึ้น แปดบิตจะรวมกันเป็นหนึ่ง ไบต์ ด้วยบิต เราสามารถนับได้ ด้วยการนับ เราสามารถตั้งชื่อสิ่งต่างๆ ได้ ASCII ใช้การนับเพื่อตั้งชื่อตัวอักษรและสัญลักษณ์

หนึ่งบิตทำให้มีสองตัวเลือก สองบิตทำให้มีสี่ตัวเลือก ในทางคณิตศาสตร์ แนวคิดนี้แสดงเป็น \(\;2^n\) สำหรับ \(n=7\) เราจะได้ \(2^7 = 128\) ตัวเลือก สำหรับ \(n=8\) เราจะได้ \(2^8 = 256\) ตัวเลือก ASCII ใช้ 7 บิต ซึ่งทำให้ได้รายการที่มีชื่อ 128 รายการ ต่อมาผู้คนได้สร้างชุด 8 บิตที่มี 256 รายการ ซึ่งเรียกว่า ASCII แบบขยาย

ASCII หมายถึงอะไร

ASCII ย่อมาจาก American Standard Code for Information Interchange (รหัสมาตรฐานอเมริกันสำหรับการแลกเปลี่ยนข้อมูล ) เริ่มต้นขึ้นในช่วงทศวรรษ 1960 สร้างขึ้นสำหรับเครื่องพิมพ์ โทรพิมพ์ และคอมพิวเตอร์ในยุคแรกๆ โดยกำหนดตัวเลขให้กับตัวอักษร ตัวเลข ช่องว่าง และสัญลักษณ์บางชนิด นอกจากนี้ยังกำหนดหมายเลขพิเศษให้กับการกระทำต่างๆ เช่น การขึ้นบรรทัดใหม่ เวอร์ชันแรกใช้ 7 บิต ดังนั้นจึงมีตัวเลขตั้งแต่ 0 ถึง 127

ภายใน ASCII มีอะไรอยู่
ตัวอย่างแผนที่แบบง่าย

ลองสังเกตสิ่งที่น่าสนใจดูสิ ตัวอักษรพิมพ์เล็กมีค่ามากกว่าคู่ตัวอักษรพิมพ์ใหญ่ 32 ตัว ตัวอย่างเช่น \(\;97 - 65 = 32\) ดังนั้น 'a' จึงมีค่ามากกว่า 'A' 32 ตัว 'b' ก็มีค่ามากกว่า 'B' 32 ตัว เป็นต้น รูปแบบนี้ทำให้การทำงานคอมพิวเตอร์บางอย่างง่ายขึ้น

ควบคุมอักขระด้วยคำธรรมดา

เมื่อคุณกดปุ่ม Enter คอมพิวเตอร์ของคุณอาจส่ง LF หรือ CR หรือทั้งสองอย่าง ขึ้นอยู่กับระบบ เครื่องมืออินเทอร์เน็ตจำนวนมากใช้ LF ระบบเก่าบางระบบใช้ CR และ LF ร่วมกัน

มุมมองทศนิยม ไบนารี และเลขฐานสิบหก

เราสามารถเขียนตัวเลขได้หลายวิธี เลขทศนิยม เป็นวิธีปกติในการนับเลขโดยใช้ตัวเลข 0 ถึง 9 เลขฐานสอง ใช้เพียง 0 และ 1 เลขฐานสิบหกใช้เลข 0 ถึง 9 และ เลขฐานสิบหกใช้เลข 0 ถึง 9 และเลขฐานสิบหก (A ถึง F)

เลขฐานสองทำให้ 'A' เป็น 65 ได้อย่างไร? ลองดูบิตใน 01000001 บิตซ้ายสุดคือ 128 จากนั้น 64, 32, 16, 8, 4, 2, 1 มีเพียง 64 และ 1 เท่านั้นที่อยู่บน ดังนั้น \(01000001_{(2)} = 0\times128 + 1\times64 + 0\times32 + 0\times16 + 0\times8 + 0\times4 + 0\times2 + 1\times1 = 65\)

จากแป้นพิมพ์สู่หน้าจอ

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

ข้อความเดินทางผ่านเครือข่ายอย่างไร

ลองนึกถึงข้อความ Hi! ตัวอักษรคือ H, i และ ! ตัวเลข ASCII ของพวกมันคือ 72, 105 และ 33 ในระบบเลขฐานสองคือ 01001000, 01101001 และ 00100001 เครือข่ายจะส่งบิตเหล่านี้ อีกฝ่ายหนึ่งอ่านบิตเหล่านั้น มองเห็นตัวเลข และแสดง H, i และ ! อีกครั้ง นี่คือวิธีการส่งข้อความแบบง่ายๆ

ASCII และหน้าโค้ดที่ขยาย

ผู้คนต้องการสัญลักษณ์เพิ่มเติม พวกเขาต้องการตัวอักษรเช่น é, ñ และ ø พวกเขาต้องการสัญลักษณ์เงินเช่น € ชุด 7 บิตมีสัญลักษณ์เพียง 128 ตัว ดังนั้นผู้คนจึงใช้ 8 บิต เมื่อ 8 บิต เราได้สัญลักษณ์ \(2^8 = 256\) ครึ่งบนตั้งแต่ 128 ถึง 255 ใช้สำหรับตัวอักษรและสัญลักษณ์เพิ่มเติม แต่มีปัญหาอยู่อย่างหนึ่ง กลุ่มต่างๆ เลือกตัวเลขที่แตกต่างกันสำหรับตัวอักษรเพิ่มเติมเหล่านี้ ตัวเลือกเหล่านี้เรียกว่า โค้ดเพจ

เนื่องจากโค้ดเพจต่างกัน ตัวเลขเดียวกันจึงอาจแสดงสัญลักษณ์ที่แตกต่างกันบนคอมพิวเตอร์เครื่องอื่นได้ ความผิดพลาดนี้เรียกว่า mojibake มีลักษณะเป็นอักขระแปลกๆ นี่เป็นเหตุผลหนึ่งที่โลกเปลี่ยนมาใช้ Unicode

ASCII และ Unicode

Unicode เป็นมาตรฐานขนาดใหญ่ที่สามารถแสดงภาษา สัญลักษณ์ทางคณิตศาสตร์ และอิโมจิได้หลากหลาย Unicode มีพื้นที่สำหรับสัญลักษณ์มากกว่าหนึ่งล้านตัว มีหลายวิธีในการจัดเก็บ Unicode วิธีหนึ่งที่นิยมคือ UTF-8

ข้อความใช้กี่ไบต์

สำหรับข้อความแบบ ASCII อย่างเดียว อักขระแต่ละตัวจะใช้หนึ่งไบต์ ดังนั้นคำว่า cat จึงใช้ 3 ไบต์ วลี hi mom มี 6 อักขระรวมช่องว่าง ดังนั้นจึงใช้ 6 ไบต์ ในการคำนวณอย่างง่าย \(\textrm{ไบต์ ASCII} = \textrm{จำนวนตัวอักษร}\)

การเรียงลำดับด้วย ASCII

คอมพิวเตอร์มักจะเรียงลำดับสตริงตามหมายเลขอักขระ การเรียงลำดับแบบ ASCII จะจัดกลุ่มสิ่งต่างๆ ในลักษณะเฉพาะ

ซึ่งหมายความว่า Zoo มาก่อน Apple หากเราเปรียบเทียบค่า ASCII แบบง่าย การเรียงลำดับจะเรียงตามตัวเลข ไม่ใช่ตามเสียงของคำ

รหัส ASCII ทั่วไปที่ควรรู้

สังเกตว่าเครื่องหมาย แอมเพอร์แซนด์ คือ & เลข ASCII คือ 38 เครื่องหมายบวก + คือ 43 เครื่องหมายลบ - คือ 45

การใช้งานจริงในเทคโนโลยีในชีวิตประจำวัน
รูปแบบ ASCII ที่ช่วย
การสร้างภาพด้วย ASCII ทำได้อย่างไรบ้าง

ผู้คนสร้างภาพโดยใช้เฉพาะตัวอักษร นี่เรียกว่า ASCII art นี่คือภาพใบหน้าเล็กๆ ที่สร้างด้วยตัวอักษร ASCII

:-) ยิ้มง่ายๆ
(^_^) ใบหน้าที่เป็นมิตร
o_O ประหลาดใจ

แต่ละหน้าเป็นเพียงตัวอักษร เช่น เครื่องหมายโคลอน เครื่องหมายขีด และเครื่องหมายวงเล็บ ไม่มีสีหรือรูปทรง มีแต่ข้อความ

ประวัติศาสตร์โดยย่อๆ พูดง่ายๆ

ASCII พัฒนามาจากโทรพิมพ์และคอมพิวเตอร์ยุคแรกๆ ในปี พ.ศ. 2506 ได้มีการตกลงกันถึงมาตรฐาน ASCII เวอร์ชันแรก ซึ่งช่วยให้เครื่องต่างๆ มากมายสื่อสารถึงกันได้ ด้วยรหัสร่วมหนึ่งเดียว ตัวอักษรอย่าง A จึงหมายถึงตัวเลขเดียวกันในทุกที่ ทำให้การส่งข้อความและการพิมพ์ข้อความทำได้ง่ายขึ้น

เมื่อ ASCII ไม่เพียงพอ

ASCII มีรายการเพียง 128 รายการ ซึ่งไม่เพียงพอสำหรับทุกภาษา ไม่สามารถแสดงภาษาจีน ฮินดี อาหรับ หรือสคริปต์อื่นๆ ได้ ไม่สามารถแสดงอิโมจิ และไม่สามารถแสดงสัญลักษณ์ทางคณิตศาสตร์และดนตรีจำนวนมากได้ เราใช้ Unicode ซึ่ง Unicode สามารถแสดงสคริปต์และสัญลักษณ์ได้มากมาย UTF-8 เป็นวิธีหนึ่งในการจัดเก็บข้อมูลเหล่านี้ ข่าวดีก็คือข้อความ ASCII ทั้งหมดทำงานภายใน UTF-8 ดังนั้นระบบสมัยใหม่จึงสามารถอ่าน ASCII แบบเก่าได้อย่างง่ายดาย

แอปจัดการ ASCII ในปัจจุบันอย่างไร

แอปส่วนใหญ่รองรับ UTF-8 แต่เมื่อไฟล์มีเฉพาะตัวอักษรและสัญลักษณ์ ASCII ก็จะมีลักษณะเดียวกันภายใต้ UTF-8 โปรแกรมเมอร์นิยมใช้รูปแบบนี้เพราะทำให้ทุกอย่างเรียบง่าย หน้าเว็บ API และเครื่องมือต่างๆ มากมายใช้ UTF-8 ซึ่งมี ASCII อยู่ด้วยโดยไม่มีการเปลี่ยนแปลงใดๆ

ข้อเท็จจริงเกี่ยวกับตัวเลขเล็กๆ น้อยๆ และคณิตศาสตร์ที่เป็นมิตร

ASCII เป็นชุดข้อมูลขนาด 7 บิต ซึ่งหมายความว่ามีอักขระที่แตกต่างกันได้สูงสุด \(2^7 = 128\) ตัว ชุดข้อมูลแบบขยายที่มี 8 บิตจะมี \(2^8 = 256\) ตัว หากข้อความของคุณมีแต่อักขระ ASCII และมี \(n\) อักขระ จะใช้ \(n\) ไบต์ ในข้อความขนาดเล็กเช่น OK , \(n = 2\) ดังนั้นจึงใช้ 2 ไบต์เมื่อจัดเก็บในรูปแบบ ASCII หรือ UTF-8

การเห็นตัวละครที่ซ่อนอยู่

รายการ ASCII บางตัวมีการทำงานแต่ไม่พิมพ์ ช่องว่างจะพิมพ์ว่างเปล่า แต่ LF และ CR จะเลื่อนเคอร์เซอร์ TAB จะกระโดด เมื่อเราเปิดไฟล์ในโปรแกรมแก้ไขพิเศษ LF อาจแสดงเป็น \n สัญลักษณ์นี้ไม่ได้เป็นส่วนหนึ่งของ ASCII แต่เป็นวิธีที่โปรแกรมแก้ไขแสดงการแบ่งบรรทัดให้คุณเห็น

ตัวอย่างธรรมดาที่รู้สึกเหมือนจริง
สิ่งที่ต้องระวัง
อุปกรณ์ใช้ ASCII ได้อย่างไรในขั้นตอนง่ายๆ

ลองนึกภาพเครื่องพิมพ์ฉลากที่พิมพ์ชื่อ โดยอ่านชื่อเป็นอักขระ แล้วแปลงอักขระแต่ละตัวเป็นเลข ASCII แล้วจัดเก็บตัวเลขเหล่านั้นไว้ในหน่วยความจำ เครื่องพิมพ์จะพิมพ์ตัวอักษรโดยการค้นหาวิธีวาดตัวเลขแต่ละตัว หากตรงกับ LF (10) เครื่องพิมพ์จะเลื่อนไปยังบรรทัดถัดไปก่อนที่จะพิมพ์เพิ่ม

การเปรียบเทียบสามวิธีในการเขียนโค้ดอักขระหนึ่งตัว

ลองดูอักขระ '!' อีกครั้ง เราสามารถเขียนโค้ดได้สามวิธี เลขฐานสิบ: 33 เลขฐานสอง: 00100001 เลขฐานสิบหก: 21 ในรูปแบบคณิตศาสตร์ \(\;33_{(10)} = 00100001_{(2)} = 21_{(16)}\) แต่ละรูปแบบมีค่าเท่ากัน แอปพลิเคชันจะเลือกรูปแบบที่ต้องการ ผู้คนมักอ่านเลขฐานสิบ คอมพิวเตอร์ชอบเลขฐานสอง เลขฐานสิบหกเป็นวิธีย่อๆ ที่ผู้คนใช้ในการอ่านเลขฐานสอง

เหตุใด ASCII จึงอยู่ได้นานนัก

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

มินิวอล์คทรู: การอ่านไฟล์สั้น

เปิดไฟล์ที่มีข้อความ Hello ไบต์คือตัวเลข ASCII 72 101 108 108 111 ในระบบเลขฐานสอง ตัวเลขเหล่านี้คือ 01001000 01100101 01101100 01101100 01101111 แอปจะอ่านตัวเลขแต่ละตัวและวาด Hello บนหน้าจอ หากตัวเลขถัดไปคือ 10 ระบบจะเลื่อนขึ้นบรรทัดใหม่ก่อนที่จะเขียนข้อความเพิ่ม นี่คือความง่ายและเสถียรของกระบวนการนี้

เมื่อใดควรเลือก ASCII-only
สัญลักษณ์สำคัญที่ผู้คนมักใช้
ตรวจสอบไอเดียเล็กๆ น้อยๆ อย่างรวดเร็วด้วยตัวเลขเล็กๆ

ลองนึกถึงเลข 10 ในระบบฐานสองคือ 00001010 ในระบบฐานสิบคือสิบ ในระบบ ASCII เลข 10 คือ LF ซึ่งเป็นตัวป้อนบรรทัด นี่แสดงให้เห็นว่าตัวเลขเดียวกันสามารถแสดงได้หลายแบบ ความหมายมาจากวิธีที่เราใช้ตัวเลขนั้น ถ้าเราบอกว่ามันเป็นรหัสอักขระ เลข 10 ก็หมายถึง LF ถ้าเราบอกว่ามันเป็นแค่จำนวนแอปเปิล ก็หมายถึงแอปเปิลสิบลูก บริบทจึงสำคัญ

นำทุกสิ่งมารวมกันด้วยตัวอย่างอีกตัวอย่างหนึ่ง

ไทย เราจะส่งคำว่า Sun จากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่ง รหัสคือ 'S' 83, 'u' 117, 'n' 110 ในเลขฐานสอง 83 คือ 01010011, 117 คือ 01110101, 110 คือ 01101110 บิตเดินทางเป็นสัญญาณเปิดและปิด อุปกรณ์อีกตัวเปลี่ยนบิตกลับเป็นตัวเลข จากนั้นจึงเปลี่ยนตัวเลขเป็นตัวอักษร แสดงคำว่า Sun หากรหัสถัดไปคือ 32 นั่นคือช่องว่าง หากรหัสถัดไปคือ 33 นั่นคือ '!' กฎยังคงเหมือนเดิมทุกครั้ง นั่นคือพลังของรหัสที่ใช้ร่วมกัน

Download Primer to continue