ดูหนึ่งข้อความ
  #7  
Old 24 กรกฎาคม 2019, 08:20
ออฟ ออฟ ไม่อยู่ในระบบ
สมาชิกใหม่
 
วันที่สมัครสมาชิก: 26 มิถุนายน 2019
ข้อความ: 4
ออฟ is on a distinguished road
Default

อ้างอิง:
ข้อความเดิมเขียนโดยคุณ ohmohm View Post
ดูๆ ไป นึกถึงเลขฐานสองหรือฐานสิบหกในคอมพิวเตอร์ โดย $256 = 2^8$ ก็คือ 8 bit หรือเลขฐานสิบหก 2 หลัก (bit = binary digit จำนวนหลักของเลขฐานสอง) ถ้า $256*256 = 2^8*2^8 = 2^{16}$ ก็คือ 16 บิต หรือเลขฐานสิบหก 4 หลัก

ผมมองว่า (x Mod (256 * 256)) คือการเอาเฉพาะ 16 บิตด้านขวาสุดของ x (ถ้าเป็นเลขฐานสิบหก ก็ 4 หลัก)

ส่วน x / (256 * 256) คือการเอา x มาเลื่อน (shift) บิตไปทางขวา 16 บิต
จากนั้น Mod 256 อีกครั้ง คือการเอาเฉพาะ 8 บิตขวาสุด (ถ้าเป็นเลขฐานสิบหก ก็ 2 หลัก แสดงว่า x เป็นเลขฐานสิบหก จำนวน 6 หลัก)
จากนั้นเอามาคูณ 100000 (เลขฐานสิบ)

15121591 = 21591 + 15100000

21591 เมื่อแปลงเป็นเลขฐานสิบหก ได้ 0x5457
ส่วน 15100000 หาร 100000 ได้ 151 แปลงเป็นเลขฐานสิบหก ได้ 0x97
เอามาต่อกันได้ = 0x975457 = 9917527

ขออภัยถ้าใช้ภาษาคอมพิวเตอร์เยอะไปหน่อย

เพิ่มๆ ถ้าคำตอบ= 5355507

53=0x35
55507=0xD8D3

คำตอบคือ 0x35D8D3 = 3528915
ใช่เลยครับวิธีนี้ สวรรค์เลยครับ ขอบคุณมากๆครับ ตอนนี้ผมใช้วิธีหาค่าด้วยวิธี ป้อนค่าแบบจนกว่าจะตรงกับคำตอบ โดยใช้การวนลูปจนเจอคำตอบ หารออกที่ละครึ่ง ขอบคุณมากจริงๆครับ มีอีกหลายที่ ที่รอคำตอบนี้ครับ
ตอบพร้อมอ้างอิงข้อความนี้