You are completely right that the maximum number in a min-heap has to be one of the leaf-nodes of that heap (it must be a leaf node, though it could be any leaf-node). A heap is a complete binary tree, and in the case of 2047 elements it will be a perfect tree (complete with the last level completely filled). In such a tree, there will be exactly 1024 elements on the bottom level of the heap, giving us 1024 candidates for the min.
Because heaps are complete trees, they are typically stored as arrays, where the array holds the values of each level of the heap stored in sequence. For example level 0, the root value of the tree, is at index 0 of the array, the two values of level 1 are stored at indices 1 and 2, level 2 at the next 4 indices, level 3 over the next 8, and so on. In this way, all the 1024 leaf nodes of 2047 element heap will be stored in the final 1024 indices of the array (indices 1023 to 2046). Because you only have to compare those elements since you know the max is among them, and because you can jump straight to them using the underlying array's O(1) access by index, you only need 1023 comparisons between the final 1024 elements to find the max.