Let b be a real number that is less than or equal to every number in the set S, and let q be any point in S. Rescale, so that b is 0 and q is 1. Now all of S is bounded below by 0, and at least one point in S is as high as 1. Build a binary number t as follows.
Let t0 = 0. If 1/2 is a lower bound for all of S, let t1 = 1/2, else let t1 = 0. Next let r = 1/4 and let t2 = t1+r if this continues to bound all of S, otherwise let t2 = t1. Divide r by 2, giving 1/8, and let t3 = t2+r if this bounds all of S, otherwise let t3 = t2. Continue this process, building the infinite sequence t. Note that t is a binary expansion, like our earlier decimal expansions, but in base 2. Thus t is also a real number. We don't have to worry about an infinite tail of ones, such as 0.11011111…, because t, by its construction, would have produced 0.11100000…
Suppose some point q in S is less than t. Write q in binary, avoiding the infinite tail of ones. Note the first digit where q and t differ. We must have qj = 0 and tj = 1. However, t would not have set tj to 1, because that rational number exceeds q.
Now suppose a larger number q is still a lower bound for S. Write q in binary as before, and suppose tj = 0 and qj = 1. At the jth step, tj would be set to 1, because that rational approximation still bounds all of S. Therefore t is the greatest lower bound for S.