Easily the cheapest and easiest way to shift voltage levels is with a resistor divider circuit. It literally takes 2 resistors.
The voltage is ‘divided’ between the 2 resistors. In the example circuit above the values were chosen to be 1/3 and 2/3 of each other. The value of the junction between R1 and R2 is the formula ((Vin * R2) / (R1 + R2)). In the above example circuit that is ((5v * 200000) / (100000 + 200000)) or 3.3v.
Voltage dividers unfortunately can only be used to LOWER voltage. They don’t work, for example, when you try to bring a voltage from 3.3v to a 5v (although usually that will work with logic devices anyway). You also need to be sure to be aware of the current being ‘wasted’ in the resistors. Try to choose really high value resistors so you don’t use too much current and waste too much power. For example the example circuit above would also work with a 2 ohm resistor in R2 and a 1 ohm resistor in R1. If we used a 1 ohm resistor for R1 with 5v going across it we would be dissipating 25 watts of power! That is 100 times the amount of power a normal 1/4 watt resistor can handle.
Advantages of a resistor divider:
Almost always available in your parts bin
Works with very high speed circuits
Can only lower voltages
Wastes power (negligible if really high values are chosen)
Care must be taken with chosen resistor values