The idea of a pull-up resistor is that it weakly "pulls" the voltage of the wire it's connected to towards 5V (or whatever voltage represents a logic "high"). However, the resistor is intentionally weak (high-resistance) enough that, if something else strongly pulls the wire toward 0V, the wire will go to 0V. An example of something that would strongly pull a wire to 0V would be the transistor in an open-collector output.
Similarly, pull-down resistors are used to hold the input to a zero (low) value when no other component is driving the input. They are used less often than pull-up resistors. Pull-down resistors can safely be used with CMOS logic gates because the inputs are voltage-controlled. TTL logic inputs that are left un-connected inherently float high, thus they require a much lower valued pull-down resistor to force the input low. This also consumes more current. For that reason, pull-up resistors are preferred in TTL circuits.
In bipolar logic families operating at 5 VDC, a typical pull-up resistor value will be 1000–5000 Ω, based on the requirement to provide the required logic level current over the full operating range of temperature and supply voltage. For CMOS and MOS logic, much higher values of resistor can be used, several thousand to a million ohms, since the required leakage current at a logic input is small.
Pull-up resistors may be used at logic outputs where the logic device cannot source current, such as open-collector TTL logic devices. Such outputs are used for driving external devices, for a wire-OR function in combinatorial logic, or for a simple way of driving a logic bus with multiple devices connected to it. For example, the circuit shown on the right uses 5 V logic level inputs to actuate a relay. If the input is left unconnected, pull-down resistor R1 ensures that the input is pulled down to a logic low. The 7407 TTL device, an open collector buffer, simply outputs whatever it receives as input, but as an open collector device, the output is left effectively unconnected when outputting a "1". Pull-up resistor R2 thus pulls the output all the way up to 12 V when the buffer outputs a "1", providing enough voltage to turn the power MOSFET all the way on and actuate the relay.
Pull-up resistors may be discrete devices mounted on the same circuit board as the logic devices. Many microcontrollers intended for embedded control applications have internal, programmable pull-up resistors for logic inputs so that minimal external components are needed.
Some disadvantages of pull-up resistors are the extra power consumed when current is drawn through the resistor, and the reduced speed of a pull-up compared to an active current source. Certain logic families are susceptible to power supply transients introduced into logic inputs through pull-up resistors, which may force the use of a separate filtered power source for the pull-ups.
I²C requires pull-up resistors on its clock (SCL) and data line (SDA) because the pins on the chips are of open-collector design. This means that a chip can only pull the lines low, otherwise they float up to VDD. In I²C, pulling the line to ground indicates a logical zero while letting it float to VDD is a logical one. As a channel access method, this allows one node to determine if another is transmitting by sensing that when asserting a logical 1 (letting it float) and sensing if the line is still at a logical 1 (no other node is pulling the line to ground) then it's possible no other node is simultaneously transmitting. However, if a second node pulls the line to zero then the first node can detect that the other is transmitting.