คอมพิวเตอร์ใช้ตัวเลข มนุษย์ใช้ตัวอักษรและสัญลักษณ์ เราต้องการสะพานเชื่อม ASCII ก็คือสะพานเชื่อมนั้น ASCII เปลี่ยนตัวอักษรหรือสัญลักษณ์แต่ละตัวให้เป็นตัวเลข คอมพิวเตอร์จะเก็บตัวเลขไว้ เมื่อเราอ่าน คอมพิวเตอร์จะแสดงตัวอักษรนั้นอีกครั้ง นี่คือวิธีที่ข้อความทำงานในหลายไฟล์และแอปพลิเคชัน
คอมพิวเตอร์ทำงานด้วยไฟฟ้า โดยมองเห็นสองสถานะ คือ เปิด และ ปิด เราเรียกสถานะเหล่านี้ว่า บิต บิตคือ 0 หรือ 1 เมื่อนำบิตจำนวนมากมารวมกันจะได้ตัวเลขที่ใหญ่ขึ้น แปดบิตจะรวมกันเป็นหนึ่ง ไบต์ ด้วยบิต เราสามารถนับได้ ด้วยการนับ เราสามารถตั้งชื่อสิ่งต่างๆ ได้ ASCII ใช้การนับเพื่อตั้งชื่อตัวอักษรและสัญลักษณ์
หนึ่งบิตทำให้มีสองตัวเลือก สองบิตทำให้มีสี่ตัวเลือก ในทางคณิตศาสตร์ แนวคิดนี้แสดงเป็น \(\;2^n\) สำหรับ \(n=7\) เราจะได้ \(2^7 = 128\) ตัวเลือก สำหรับ \(n=8\) เราจะได้ \(2^8 = 256\) ตัวเลือก ASCII ใช้ 7 บิต ซึ่งทำให้ได้รายการที่มีชื่อ 128 รายการ ต่อมาผู้คนได้สร้างชุด 8 บิตที่มี 256 รายการ ซึ่งเรียกว่า ASCII แบบขยาย
ASCII ย่อมาจาก American Standard Code for Information Interchange (รหัสมาตรฐานอเมริกันสำหรับการแลกเปลี่ยนข้อมูล ) เริ่มต้นขึ้นในช่วงทศวรรษ 1960 สร้างขึ้นสำหรับเครื่องพิมพ์ โทรพิมพ์ และคอมพิวเตอร์ในยุคแรกๆ โดยกำหนดตัวเลขให้กับตัวอักษร ตัวเลข ช่องว่าง และสัญลักษณ์บางชนิด นอกจากนี้ยังกำหนดหมายเลขพิเศษให้กับการกระทำต่างๆ เช่น การขึ้นบรรทัดใหม่ เวอร์ชันแรกใช้ 7 บิต ดังนั้นจึงมีตัวเลขตั้งแต่ 0 ถึง 127
ลองสังเกตสิ่งที่น่าสนใจดูสิ ตัวอักษรพิมพ์เล็กมีค่ามากกว่าคู่ตัวอักษรพิมพ์ใหญ่ 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 และ ! อีกครั้ง นี่คือวิธีการส่งข้อความแบบง่ายๆ
ผู้คนต้องการสัญลักษณ์เพิ่มเติม พวกเขาต้องการตัวอักษรเช่น é, ñ และ ø พวกเขาต้องการสัญลักษณ์เงินเช่น € ชุด 7 บิตมีสัญลักษณ์เพียง 128 ตัว ดังนั้นผู้คนจึงใช้ 8 บิต เมื่อ 8 บิต เราได้สัญลักษณ์ \(2^8 = 256\) ครึ่งบนตั้งแต่ 128 ถึง 255 ใช้สำหรับตัวอักษรและสัญลักษณ์เพิ่มเติม แต่มีปัญหาอยู่อย่างหนึ่ง กลุ่มต่างๆ เลือกตัวเลขที่แตกต่างกันสำหรับตัวอักษรเพิ่มเติมเหล่านี้ ตัวเลือกเหล่านี้เรียกว่า โค้ดเพจ
เนื่องจากโค้ดเพจต่างกัน ตัวเลขเดียวกันจึงอาจแสดงสัญลักษณ์ที่แตกต่างกันบนคอมพิวเตอร์เครื่องอื่นได้ ความผิดพลาดนี้เรียกว่า mojibake มีลักษณะเป็นอักขระแปลกๆ นี่เป็นเหตุผลหนึ่งที่โลกเปลี่ยนมาใช้ Unicode
Unicode เป็นมาตรฐานขนาดใหญ่ที่สามารถแสดงภาษา สัญลักษณ์ทางคณิตศาสตร์ และอิโมจิได้หลากหลาย Unicode มีพื้นที่สำหรับสัญลักษณ์มากกว่าหนึ่งล้านตัว มีหลายวิธีในการจัดเก็บ Unicode วิธีหนึ่งที่นิยมคือ UTF-8
สำหรับข้อความแบบ ASCII อย่างเดียว อักขระแต่ละตัวจะใช้หนึ่งไบต์ ดังนั้นคำว่า cat จึงใช้ 3 ไบต์ วลี hi mom มี 6 อักขระรวมช่องว่าง ดังนั้นจึงใช้ 6 ไบต์ ในการคำนวณอย่างง่าย \(\textrm{ไบต์ ASCII} = \textrm{จำนวนตัวอักษร}\)
คอมพิวเตอร์มักจะเรียงลำดับสตริงตามหมายเลขอักขระ การเรียงลำดับแบบ ASCII จะจัดกลุ่มสิ่งต่างๆ ในลักษณะเฉพาะ
ซึ่งหมายความว่า Zoo มาก่อน Apple หากเราเปรียบเทียบค่า ASCII แบบง่าย การเรียงลำดับจะเรียงตามตัวเลข ไม่ใช่ตามเสียงของคำ
สังเกตว่าเครื่องหมาย แอมเพอร์แซนด์ คือ & เลข ASCII คือ 38 เครื่องหมายบวก + คือ 43 เครื่องหมายลบ - คือ 45
ผู้คนสร้างภาพโดยใช้เฉพาะตัวอักษร นี่เรียกว่า ASCII art นี่คือภาพใบหน้าเล็กๆ ที่สร้างด้วยตัวอักษร ASCII
:-) ยิ้มง่ายๆ
(^_^) ใบหน้าที่เป็นมิตร
o_O ประหลาดใจ
แต่ละหน้าเป็นเพียงตัวอักษร เช่น เครื่องหมายโคลอน เครื่องหมายขีด และเครื่องหมายวงเล็บ ไม่มีสีหรือรูปทรง มีแต่ข้อความ
ASCII พัฒนามาจากโทรพิมพ์และคอมพิวเตอร์ยุคแรกๆ ในปี พ.ศ. 2506 ได้มีการตกลงกันถึงมาตรฐาน ASCII เวอร์ชันแรก ซึ่งช่วยให้เครื่องต่างๆ มากมายสื่อสารถึงกันได้ ด้วยรหัสร่วมหนึ่งเดียว ตัวอักษรอย่าง A จึงหมายถึงตัวเลขเดียวกันในทุกที่ ทำให้การส่งข้อความและการพิมพ์ข้อความทำได้ง่ายขึ้น
ASCII มีรายการเพียง 128 รายการ ซึ่งไม่เพียงพอสำหรับทุกภาษา ไม่สามารถแสดงภาษาจีน ฮินดี อาหรับ หรือสคริปต์อื่นๆ ได้ ไม่สามารถแสดงอิโมจิ และไม่สามารถแสดงสัญลักษณ์ทางคณิตศาสตร์และดนตรีจำนวนมากได้ เราใช้ Unicode ซึ่ง Unicode สามารถแสดงสคริปต์และสัญลักษณ์ได้มากมาย UTF-8 เป็นวิธีหนึ่งในการจัดเก็บข้อมูลเหล่านี้ ข่าวดีก็คือข้อความ ASCII ทั้งหมดทำงานภายใน UTF-8 ดังนั้นระบบสมัยใหม่จึงสามารถอ่าน 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 แล้วจัดเก็บตัวเลขเหล่านั้นไว้ในหน่วยความจำ เครื่องพิมพ์จะพิมพ์ตัวอักษรโดยการค้นหาวิธีวาดตัวเลขแต่ละตัว หากตรงกับ LF (10) เครื่องพิมพ์จะเลื่อนไปยังบรรทัดถัดไปก่อนที่จะพิมพ์เพิ่ม
ลองดูอักขระ '!' อีกครั้ง เราสามารถเขียนโค้ดได้สามวิธี เลขฐานสิบ: 33 เลขฐานสอง: 00100001 เลขฐานสิบหก: 21 ในรูปแบบคณิตศาสตร์ \(\;33_{(10)} = 00100001_{(2)} = 21_{(16)}\) แต่ละรูปแบบมีค่าเท่ากัน แอปพลิเคชันจะเลือกรูปแบบที่ต้องการ ผู้คนมักอ่านเลขฐานสิบ คอมพิวเตอร์ชอบเลขฐานสอง เลขฐานสิบหกเป็นวิธีย่อๆ ที่ผู้คนใช้ในการอ่านเลขฐานสอง
ASCII มีขนาดเล็กและชัดเจน ถูกสร้างขึ้นตั้งแต่ยุคแรกๆ มีเครื่องมือและโปรโตคอลมากมายที่สร้างขึ้นบน ASCII เนื่องจากรหัส Unicode 128 ตัวแรกตรงกับ ASCII แผนนี้จึงยังคงใช้งานได้ในปัจจุบัน นี่คือเหตุผลที่คุณสามารถเปิดไฟล์ข้อความเก่าๆ บนโทรศัพท์หรือแล็ปท็อปเครื่องใหม่แล้วเห็นตัวอักษรเดิมได้
เปิดไฟล์ที่มีข้อความ Hello ไบต์คือตัวเลข ASCII 72 101 108 108 111 ในระบบเลขฐานสอง ตัวเลขเหล่านี้คือ 01001000 01100101 01101100 01101100 01101111 แอปจะอ่านตัวเลขแต่ละตัวและวาด Hello บนหน้าจอ หากตัวเลขถัดไปคือ 10 ระบบจะเลื่อนขึ้นบรรทัดใหม่ก่อนที่จะเขียนข้อความเพิ่ม นี่คือความง่ายและเสถียรของกระบวนการนี้
ลองนึกถึงเลข 10 ในระบบฐานสองคือ 00001010 ในระบบฐานสิบคือสิบ ในระบบ ASCII เลข 10 คือ LF ซึ่งเป็นตัวป้อนบรรทัด นี่แสดงให้เห็นว่าตัวเลขเดียวกันสามารถแสดงได้หลายแบบ ความหมายมาจากวิธีที่เราใช้ตัวเลขนั้น ถ้าเราบอกว่ามันเป็นรหัสอักขระ เลข 10 ก็หมายถึง LF ถ้าเราบอกว่ามันเป็นแค่จำนวนแอปเปิล ก็หมายถึงแอปเปิลสิบลูก บริบทจึงสำคัญ
ไทย เราจะส่งคำว่า Sun จากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่ง รหัสคือ 'S' 83, 'u' 117, 'n' 110 ในเลขฐานสอง 83 คือ 01010011, 117 คือ 01110101, 110 คือ 01101110 บิตเดินทางเป็นสัญญาณเปิดและปิด อุปกรณ์อีกตัวเปลี่ยนบิตกลับเป็นตัวเลข จากนั้นจึงเปลี่ยนตัวเลขเป็นตัวอักษร แสดงคำว่า Sun หากรหัสถัดไปคือ 32 นั่นคือช่องว่าง หากรหัสถัดไปคือ 33 นั่นคือ '!' กฎยังคงเหมือนเดิมทุกครั้ง นั่นคือพลังของรหัสที่ใช้ร่วมกัน