A microprocessor addresses memory locations from 0000 to 3FFF (hex). Each address stores 1 byte. How many bytes are stored in total, and what is this size expressed in kilobytes (KB)?
-
A4,095, 4K
-
B16,384, 16K
-
C32,740, 32K
-
D46,040, 46K
-
ENone of the above
Answer
Correct Answer: 16,384, 16K
Explanation
Introduction / Context:Computers commonly express address spaces in hexadecimal because each hex digit corresponds to 4 binary bits. Understanding how to convert a hex address range into a byte count and then into kilobytes is fundamental for memory mapping, stack sizing, and device decoding.
Given Data / Assumptions:
- Address range: 0000 to 3FFF (hex), inclusive.
- Each address holds exactly 1 byte.
- 1 KB (K) is taken as 1024 bytes in typical microcomputer contexts.
Concept / Approach:The number of addresses from 0000 to 3FFF equals 3FFF − 0000 + 1. In hex, 3FFF + 1 = 4000 (hex). Therefore, the total count is 0x4000 addresses. Convert 0x4000 to decimal: 4 * 16^3 = 4 * 4096 = 16,384 bytes. Expressed in KB: 16,384 / 1024 = 16 KB.
Step-by-Step Solution:Compute total addresses: last − first + 1 = 3FFF − 0000 + 1 = 4000 (hex).Convert 4000 (hex) to decimal: 4 * 4096 = 16,384.Relate bytes to kilobytes: 16,384 / 1024 = 16 KB.Select “16,384, 16K.”
Verification / Alternative check:Binary view: 0000 to 3FFF spans 14 address bits (since 3FFF = 0011 1111 1111 1111). 2^14 = 16,384 addresses, confirming the same result.
Why Other Options Are Wrong:4,095 (4K) undercounts because it ignores inclusive addressing. 32,740 (32K) and 46,040 (46K) are not powers-of-two aligned with the range. None of the above is wrong because the correct pair exists as option B.
Common Pitfalls:Forgetting the +1 when ranges are inclusive; mixing decimal “kilo” (1000) with binary “K” (1024) when expressing memory sizes.
Final Answer:16,384, 16K