สัญลักษณ์สำหรับเลขฐานสอง เช่น 1000100B - 1

“สวัสดี อามีโก้!”

"สวัสดี บิลาโบ!"

"ฉันต้องการบอกคุณเล็กน้อยเกี่ยวกับระบบเลขต่างๆ"

"คุณคงเคยได้ยินว่าผู้คนใช้ระบบทศนิยม นี่คือข้อเท็จจริงหลักของระบบนี้:

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"