
“สวัสดี อามีโก้!”
"สวัสดี บิลาโบ!"
"ฉันต้องการบอกคุณเล็กน้อยเกี่ยวกับระบบเลขต่างๆ"
"คุณคงเคยได้ยินว่าผู้คนใช้ระบบทศนิยม นี่คือข้อเท็จจริงหลักของระบบนี้:
1) ใช้ 10 หลักในการเขียนตัวเลข: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
2) เลข 543 หมายถึง 5 ร้อย + 4 สิบ + 3 หน่วย
"นี่เทียบเท่ากับการเขียน 5*100 + 4*10 + 3*1 ซึ่งสามารถเขียนเป็น 5*10 2 + 4*10 1 + 3*10 0 .
โปรดทราบว่าหลักพัน หลักร้อย หลักสิบเป็นเลขยกกำลังของเลข 10
1)หนึ่งคือ 10 ยกกำลังศูนย์
2) สิบคือ 10 ยกกำลังแรก
3)หนึ่งร้อยคือ 10 ยกกำลังสอง
4) หนึ่งพันเป็น 10 ยกกำลังสาม เป็นต้น
"อ๋อ เข้าใจแล้ว"
"แต่ตอนนี้ลองนึกภาพว่าเรามีเพียง 8 หลัก จากนั้นเราก็มีระบบเลขฐานแปด นี่คือข้อเท็จจริงหลัก:"
1) ใช้ตัวเลข 8 หลักในการเขียนตัวเลข: 0, 1, 2, 3, 4, 5, 6, 7
2) หมายเลข 543 8หมายถึง 5*8 2 +4*8 1 +3*8 0 . กล่าวคือ 5*64 + 4*8 + 3*1 = 320+32+3 = 320+32+3=355 10
ฉันเขียน 8 และ 10 เป็นตัวห้อยเพื่อระบุจำนวนหลักที่ใช้แทนจำนวน
"ฉันคิดว่าฉันเข้าใจแล้ว ฉันคิดว่าฉันสามารถแปลงตัวเลขจากระบบเลขฐานแปดเป็นทศนิยมได้ แต่ฉันคงใช้วิธีอื่นไม่ได้"
"ไม่ใช่เรื่องยาก ลองนึกภาพว่าคุณต้องใช้รถบรรทุกหลายคันในการเคลื่อนย้ายกองทราย คุณมีรถดัมพ์ รถบรรทุกธรรมดา และรถบรรทุกขนาดเล็กมาก แต่รถบรรทุกจะไปไม่ได้หากไม่เต็ม"
"คุณจะทำอย่างไร"
"อย่างแรก ฉันจะเติมรถบรรทุกขยะเพราะมันใหญ่ที่สุด จากนั้นเมื่อฉันเห็นว่ามีทรายไม่พอให้เต็มรถบรรทุก ฉันก็จะเปลี่ยนไปใช้รถคันที่เล็กกว่า และคันที่เล็กกว่านั้น"
"จริง ๆ แล้วคล้ายกันมาก ลองแปลงเลข 355 10กลับเป็นเลขฐานแปด"
"อย่างแรก เราหารด้วย 64 (8 2 ) และได้ 5 ด้วยเศษที่เหลือ 35 ซึ่งหมายความว่าหลักแรกของตัวเลขของเราคือ 5 จากนั้นเรานำเศษที่เหลือไปหารด้วย 8 (8 1 ) และได้ 4 ด้วยเศษ จาก 3 ดังนั้นเราจึงได้หมายเลข 543 8 "
"ยังไงก็ตาม คุณยังสามารถย้ายไปทางอื่นได้ ท้ายที่สุด 543 8 == 5*64+4*8+3 == ((5)*8+4)*8+3 หลักสิบแปดของเรา " และ "ร้อย" ต้องหารด้วย 8 ดังนั้น ส่วนที่เหลือของการหารด้วย 8 จะเป็นเลขฐานแปดของเรา"
"อันดับแรก ให้หาร 355 ด้วย 8 เราจะได้ 44 โดยเหลือเศษ 3 นั่นคือ 355=44*8+3 และ 44 สามารถแสดงเป็น 5*8+4 ดังนั้น 355= (5*8+ 4)*8+3; นี่คือตัวเลขของเรา: 5, 4, 3 ตัวเลขที่เรากำลังมองหาคือ 543 8 "
"ฉันคิดว่าฉันเข้าใจแล้ว แต่ฉันจะต้องฝึกฝนอีกเล็กน้อยเพื่อให้เข้าใจทุกอย่างทั้งหมด"
"การเขียนโปรแกรมมักจะเกี่ยวข้องกับการใช้ตัวเลขที่มีฐานต่างกัน (เช่น จำนวนหลักที่ใช้ในระบบเลข) ที่นิยมมากที่สุดคือ 2, 8, 10, 16 และ 64"
"แต่เหตุใดจึงจำเป็น เหตุใดเราจึงต้องการตัวเลขที่แสดงด้วย 2, 8, 16 หรือ 64 หลัก"
"มันเกี่ยวกับวิธีการทำงานของโปรเซสเซอร์ภายใน พูดง่ายๆ ก็คือ ถ้ากระแสไหลผ่านสายไฟ เราจะบอกว่ามีค่าเป็น 1 หากไม่มีกระแสไฟฟ้า ค่าจะเป็น 0 ตัวเลขทั้งหมดจะถูกเก็บไว้ในเซลล์หน่วยความจำ เหล่านี้ เซลล์มีการออกแบบพื้นฐานมาก และเก็บได้เพียง 0 หรือ 1"
"แต่การลดความซับซ้อนดังกล่าว (เพียง 0 หรือ 1) ทำให้สามารถสร้างองค์ประกอบภายในโปรเซสเซอร์และหน่วยความจำที่มีขนาดเล็กมากได้ โปรเซสเซอร์และโมดูลหน่วยความจำสมัยใหม่ประกอบด้วยองค์ประกอบต่างๆ นับพันล้านชิ้น และพื้นที่ขององค์ประกอบมักจะไม่เกินตารางเซนติเมตร"
“โอ้ ตอนนี้ฉันรู้แล้ว”
"ตอนนี้เราหันไปใช้เลขฐานสอง ที่นี่เรามีเหมือนกันกับเลขฐานแปด ง่ายกว่าเท่านั้น"
1) ใช้ตัวเลข 2 หลักในการเขียนตัวเลข: 0, 1
2) หมายเลข 101 2หมายถึง 1*2 2 + 0*2 1 + 1*2 0 . กล่าวคือ 1*4+0*2+1*1 =4+1=51 10
"ใช่ ฉันจำได้ เซลล์หนึ่งซึ่งสามารถมีค่าเป็น 0 หรือ 1 เรียกว่าบิต แต่ไม่สามารถเก็บข้อมูลได้มาก ดังนั้นเซลล์เหล่านี้จึงรวมกันเป็นกลุ่มละ 8 กลุ่มเหล่านี้เรียกว่าไบต์ "
"ถูกต้อง ไบต์คือกลุ่มของแปดบิต มันสามารถเก็บค่าต่อไปนี้: 00000000, 00000001, ... 11111111 ค่าเหล่านี้สอดคล้องกับเลขฐานสิบ 0,1, ... 255 ซึ่งให้ผลรวมเป็น 256 ค่า"
จำนวนเต็มที่ใหญ่ที่สุดใน Java คืออะไร หรือมากกว่านั้นคือประเภทของมันคืออะไร?
"A long ความยาวประกอบด้วย 8 ไบต์ หรืออีกนัยหนึ่งคือ 64 บิต สามารถเก็บค่าได้ตั้งแต่ -2 63ถึง 2 63 -1
"ใช่ ฉันจะไม่พูดถึงวิธีแปลงตัวเลขจากทศนิยมเป็นเลขฐานสองหรือกลับกัน ไม่เช่นนั้น บทเรียนจะยาวเกินไป"
"เรามาพูดถึงระบบเลขฐานสิบหกกันดีกว่า"
"ใช่ มันน่าสนใจมาก สำหรับระบบเลขฐานสองและเลขฐานแปด เราแค่กำจัดตัวเลขโดยเริ่มจากสองและแปดตามลำดับ แต่เราจะทำอย่างไรที่นี่ เพิ่มตัวเลขใหม่?"
"แน่นอน! ดูนี่สิ:"
1)ใช้ตัวเลข 16 หลักในการเขียนตัวเลข: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
2)หมายเลข 543 16หมายถึง 5*16 2 + 4*16 1 + 3*16 0 . กล่าวคือ 5*256+4*16+3*1 = 1280+64+3 = 1347 10
"นี่เราเพิ่งใส่ตัวอักษรเป็นตัวเลขเหรอ O_o"
"ใช่ แล้วเรื่องใหญ่คืออะไร ทำไมต้องประดิษฐ์ตัวเลขใหม่ทั้งๆ ที่ตัวอักษรใช้ได้ดีทีเดียว ลองดูสิ:"
เลขฐานสิบหก | ค่าทศนิยม |
---|---|
0 | 0 |
1 | 1 |
8 | 8 |
9 | 9 |
ก | 10 |
ข | 11 |
ค | 12 |
ง | 13 |
อี | 14 |
ฉ | 15 |
"ฉันจะไม่พูดถึงการแปลงจากทศนิยมเป็นเลขฐานสิบหก แต่นี่คือข้อเท็จจริงที่น่าสนใจประการหนึ่ง เลขฐานสิบหกแสดงด้วย 4 บิตพอดี โดยมีค่าตั้งแต่ 0 ถึง 15 ดังนั้น หนึ่งไบต์สามารถเขียนด้วยเลขฐานสองแปดหลัก (0 หรือ 1) หรือเลขฐานสิบหกสองหลัก"
"นี่คือตัวอย่าง:"
เลขฐานสิบ | เลขฐานสอง | เลขฐานสิบหก |
---|---|---|
0 | 0000 0000 | 00 |
1 | 0000 0001 | 01 |
15 | 0000 1111 | 0f |
16 | 0001 0000 | 10 |
31 | 0001 1111 | 1f |
32 | 0010 0000 | 20 |
128 | 1,000,0000 | 80 |
129 | 1,000,0001 | 81 |
255 | 1111 1111 | เอฟ |
"การแสดงเลขฐานสิบหกสามารถแปลงเป็นเลขฐานสองได้อย่างง่ายดาย (และกลับกัน) นั่นเป็นสาเหตุที่การแทนไบต์ภายในของตัวเลขมักไม่ค่อยถูกกำหนดให้เป็นเลขฐานสอง (โดยใช้ 0 และ 1) ในการเขียนโปรแกรม นั่นอาจยาวเกินไปและเข้าใจยาก สัญลักษณ์เลขฐานสิบหก อ่านง่ายและกะทัดรัดกว่ามาก"
"ฉันเห็นด้วย แม้แต่ฉันก็ชอบมัน"
"อย่างไรก็ตาม Java ให้คุณเขียนตัวเลขในระบบเลขต่างๆ ได้โดยตรงในโค้ด:"
ฐาน | ลักษณะเด่น | ตัวอย่าง | หมายเลขไม่ถูกต้อง |
---|---|---|---|
2 | 0b ที่จุดเริ่มต้นของตัวเลข | 0b00001111 _ | 0b 11111 2 1 |
8 | 0 ที่จุดเริ่มต้นของตัวเลข | 0 1234343 | 0 12 8 |
10 | ไม่มี | 95459 | 909 ก |
16 | 0x ที่จุดเริ่มต้นของตัวเลข | 0x 10ff | 0x 1c gh |
"บทเรียนที่ยอดเยี่ยม ขอบคุณ Bilaabo"
GO TO FULL VERSION