Answer from cs61c-cj (Peter Lau 16539384) for Question 2 The lower order (rightmost) bits in addresses vary reguarly and repeat. If one used the high-order bits in the memory address to determine the cache location, expensive cache space may be wasted. Since "large" high-order bit patterns like "1111" only appear near the end of a memory array, a direct cache mapping with high-order bits would probably have an unequal distribution of entries towards one end (higher-order or lower-order bits). To keep the data distribution within the cache approximately equal, using the lower-order bits helps with regularity.