When a device wishes to write a 1 to a wire, that's like pumping green Kool Aid into the pipe.
When a device wishes to write a 0 to a wire, that's like pumping red Kool Aid into the pipe.
Clearly, we don't want two devices writing a 0 and a 1 to the wire, because this would cause the pipe to have red and green Kool Aid, which would probably result in something brown.
Unfortunately, devices that read off the wire only read 0 or 1. It's already difficult enough to determine a 0 from a 1, so certainly devices are not made that can read, say, 0.5 from the wire.
Thus, we want to avoid devices trying to "read" the color of the Kool Aid when it's red and green mixed together.
We can think of a similar analogy. Suppose someone is trying to send you signals using a red and green flashlight (producing red and green light, respectively). Once the flashlight is off, there's no signal being sent.
In this diagram, we have four devices. D1 writes to the wire, while D2, D3, D4 read from the wire. We'll assume a device has two connections to the wire: one to read, and one to write. It's possible to have a single connection, which would mean the device could only read or write at any one time. Although, practically speaking a device usually only reads or writes at any one time. There's almost no reason to do both, since a device that writes knows what value it's writing.
The diagram tries to emphasize the idea that, at most, one device should be writing, but more than one device can read. Devices are not obligated to read.
What are devices? These devices can be, for example, memory, CPU, or I/O devices. We keep them generic since there's no need for them to be specific.
| Device One | Device Two | Result |
| 0 | 0 | ??? |
| 0 | 1 | ??? |
| 0 | Z | 0 |
| 1 | 0 | ??? |
| 1 | 1 | ??? |
| 1 | Z | 1 |
| Z | 0 | 0 |
| Z | 1 | 1 |
| Z | Z | Z |
??? is a garbage value, and occurs when two devices write to the wire. It's like when the red and green kool Aid mix. A device attempting to read is not guaranteed to read 0 always or 1 always. Think of reading as a non-deterministic operation where sometimes it reads a 1 and sometimes it reads a 0. We want to avoid such situations.
As you can see, the "truth table" (which has 3 possible values, instead of the usual two) is conservative. We assume the wire has garbage value even when both devices attempt to write a 1 or when both devices attempt to write a 0. This is probably not true in reality, but underscores our desire to avoid having two devices write to a wire at any one time.
When no device writes to the bus, then there's no Kool Aid, and again devices attempting to read will read a value of 0 sometimes and 1 sometimes.
The difference between ??? and Z is that once a device does write a value, and the wir has Z, then the bus has a valid value (whatever is being written). However, if the wire already has ???, then any additional devices does not improve the situation. Devices attempting to read from a wire with ??? still have problems.
A wire has no memory. That is, when a device writes to a wire, the wire does not store that value. Thus, a device must continuously write to the wire. If it stops writing, then the wire goes back to Z (i.e., having no value).