ปัญหาและแนวทางแก้ไข
1. วาดเส้นจำนวนด้วยจำนวนเต็มตั้งแต่ -10 ถึง +10
สารละลาย:
2. เพิ่มเลขฐานสองต่อไปนี้ในส่วนเสริมสองของ 8 บิต: 1010102 และ 11112
สารละลาย:
3. ใช้เฉพาะวิธีเสริมของทั้งสองใน 8 บิตเพื่อลบเลขฐานสอง 11112 ออกจากเลขฐานสอง 1010102
สารละลาย:
101010 ในส่วนเสริมสองของ 8 บิตคือ 00101010
1111 ใน 8 บิตคือ 00001111
การแปลง 00001111 ทั้งหมดใน 8 บิตจะได้ 11110000
การบวก 1 ถึง 11110000 จะได้ 11110001
การลบส่วนเสริมของทั้งสองคือการบวกจำนวนบวกและลบของส่วนเสริมทั้งสองดังนี้:
การยกครั้งสุดท้ายของ 1 จะถูกโยนทิ้งไปในการลบส่วนเสริมของสอง
5. หาร 36,37510 ด้วย 100010 เป็นทศนิยมและไบนารี่ แล้วเปรียบเทียบผลลัพธ์
สารละลาย:
ใช้การแบ่งการคืนค่า
การหารทศนิยมในสี่:
คำตอบคือ 36 10 ที่เหลือ 375 10 .
36,375 10 จำนวนเต็มจะต้องถูกแปลงเป็นฐาน 2 ดังนี้:
อ่านเศษจากล่างสุด: 36,375 10 = 1000111000010111 2 .
1,000 10 จำนวนเต็มจะต้องถูกแปลงเป็นฐาน 2 ดังนี้:
อ่านเศษจากด้านล่าง: 1,000 10 = 1111101000 2 .
ต่อไป 1011000100110111 2 หาร 1111101000 2 โดยการแบ่งยาว (การแบ่งคืน) ตั้งแต่ 36,375 10 = 1011000100110111 2 และ 1,000 10 = 1111101000 2 (การหารไบนารี่เป็นสิบบิต):
การหารเริ่มต้นที่บิตที่ 11 ของเงินปันผล เนื่องจากเงินปันผล 10 บิตแรกน้อยกว่าตัวหาร คำตอบคือ 100100 2 ส่วนที่เหลือ 101110111 2 .
สำหรับการเปรียบเทียบผลลัพธ์ ควรแสดงว่าจำนวนเต็มของผลหารเท่ากันและเศษที่เหลือเท่ากัน นั่นหมายความว่าควรจะแสดงว่า 36 10 = 100100 2 และ 375 10 = 101110111 2 .
6. ใช้ 8 บิตที่คุณเลือกเพื่อแสดงตรรกะ AND, OR, XOR, Invert, Shift Right, Shift Left, Rotate Right และ Rotate Left แต่ละไบต์ควรมีส่วนผสมของ 1 และ 0
สารละลาย:
- ก) เขียนโค้ดตัวเลขสำหรับอักขระ ASCII ที่เป็นศูนย์ในรูปแบบเลขฐานสิบหก เลขฐานสอง และเลขฐานสิบ
b) เขียนรหัสตัวเลขสำหรับอักขระ ASCII ของ '1' ในเลขฐานสิบหก ไบนารี และทศนิยม
c) เขียนรหัสตัวเลขสำหรับอักขระ ASCII ของ 'A' ในเลขฐานสิบหก ไบนารี และทศนิยม
d) เขียนรหัสตัวเลขสำหรับอักขระ ASCII ของ 'a'' ในเลขฐานสิบหก ไบนารี และทศนิยม
สารละลาย:
ก) '0': 30, 00110000, 48
ข) '1': 31, 00110001, 49
ค) 'ก': 41, 001000001, 65
ง) 'ก': 61, 001100001, 97
8. แปลง 49.4910 เป็นฐานสอง. แปลงผลลัพธ์ของคุณเป็นรูปแบบจุดลอยตัว IEEE 32 บิต
สารละลาย:
แบบฟอร์ม 49.4910, 49 และ .49 จะถูกแปลงเป็นฐาน 2 ต่างกัน
การแปลง 49:
∴ 4910 = 1100012 อ่านจากด้านล่างของคอลัมน์สุดท้าย
การแปลง .49:
.49 x 2 = 0.98 บิตแรกคือ 0
.98 x 2 = 1.96 บิตที่สองคือ 1
.96 x 2 = 1.92 บิตที่สามคือ 1
∴ .49 10 = 110 2 อ่านจากด้านบนของคอลัมน์สุดท้าย
ดังนั้น 49.49 10 = 110001.110 2
110001.110 2 = 1.10001110 x 2 +5 ในรูปแบบมาตรฐานของฐานสอง
“1” ในผลลัพธ์ไม่ได้ระบุนัยสำคัญ 1.10001110 แต่ถือว่าอยู่ที่นั่น
สำหรับเลขชี้กำลัง 127 10 แสดงถึงศูนย์ ซึ่งหมายความว่าดัชนี (กำลัง) ของ 5 10 จาก 2 5 เพิ่มเป็น 127 แล้ว 10 . นั่นคือ:
127 10 + 5 10 = 132 10
132 10 ต้องแปลงเป็นฐาน 2 แล้วจึงใส่เข้าไปในช่องของเลขชี้กำลัง
ดังนั้น 132 10 = 10000100 2
10000100 2 มี 7 บิต เลขชี้กำลังคือแปดบิต 10000100 2 มีแปดบิต และมันก็ไม่เป็นไร
49.49 10 เป็นบวก ดังนั้นบิตเครื่องหมายจึงเป็น 0 ในรูปแบบจุดลอยตัว 32 บิต 49.49 10 = 110001.110 2 เป็น:
0 10000100 10001110000000000000000
- ก) รูปแบบจุดลอยตัวของ IEEE 64 บิตแตกต่างจากรูปแบบ 32 บิตอย่างไร
b) ให้เหตุผลสองประการที่เกี่ยวข้องว่าทำไมรูปแบบ 64 บิตจึงถูกอธิบายว่ามีความแม่นยำสองเท่าหรือสูงกว่า 32 บิต
สารละลาย:
- – มี 64 บิตสำหรับแทนตัวเลข ไม่ใช่ 32
– หลังจากบิตเครื่องหมาย จะมี 11 บิตสำหรับเลขชี้กำลัง
– เลขชี้กำลังสำหรับดัชนีศูนย์ (2 0 ) คือ 1,023 10 = 01111111111 2 .
– สิบเอ็ดบิตตามด้วย 52 บิตสำหรับนัยสำคัญที่ชัดเจน
– มีช่วงตัวเลขที่กว้างกว่ารูปแบบ 32 บิต - สาเหตุที่รูปแบบ 64 บิตถูกอธิบายว่ามีความแม่นยำเป็นสองเท่าหรือสูงกว่าเมื่อเปรียบเทียบกับรูปแบบ 32 บิตก็คือ ช่วงเวลาระหว่างเศษส่วนผสมสองค่าที่ติดกันซึ่งล้อมรอบด้วยจำนวนเต็มสองตัวติดต่อกันสำหรับรูปแบบ 64 บิต นั้นเล็กกว่าค่าที่สอดคล้องกัน ช่วงเวลารูปแบบ 32 บิต นอกจากนี้ ยังมีเศษส่วนแบบผสมที่เป็นไปได้มากกว่าจำนวนเต็มที่มีขอบเขตสองตัวสำหรับรูปแบบ 64 บิต มากกว่าที่มีในรูปแบบ 32 บิตตามลำดับ