I was wondering how your computer sends binary zero as an electrical signal. Is there a certain delay or does it do something unique.
The most basic CMOS/TTL logic uses a voltage within a specified min/max range to represent either a "logic low" 0 or a "logic high" 1. These include the discrete logic gates like 7400 / 7402 / 7432 that were used in the 1970's (and are still used sometimes on solderless breadboards), as well as more modern higher-integration chips. The exact voltage range is listed in the device's datasheet Electrical Characteristics table:
- VOH = voltage output high; specified as a minimum limit
- VOL = voltage output low; specified as a maximum limit
The device that is driving the output, is guaranteed to drive a logic low 0 as some voltage between
VOLmax; and also to drive a logic high 1 as some voltage between
VCC (power supply rail). The gap between
VOHmin is a dead band where the output is undefined -- this is what provides the
noise immunity of digital signalling as compared to analog signals.
- VIH = voltage input high; specified as a minimum limit
- VIL = voltage input low; specified as a maximum limit
The device that receives the input, will interpret a voltage between
VILmax as meaning a logic low 0, and interpret a voltage between
VCC as meaning a logic high 1. Any input between
VIHmin is not valid. And any input below
GND or above
VCC may violate the Absolute Maximum Ratings (i.e. permanently damage or degrade the device).
For CMOS, the VOH/VOL and VIH/VIL thresholds are usually a percentage of the power supply, like 30%VCC / 70%VCC. For TTL, the thresholds are absolute with 2.4V the usual VOLmin voltage.
Timing is a separate concern. If the logic is just implementing some Boolean equation ("glue logic"), the output signal simply follows the input after some specified
propagation delay time. If the logic implements a
state machine or a CPU, there will be a clock signal that determines the system's timing.
You also mentioned the Ethernet and USB communications protocols; these are a lot more complicated. It's a lot harder to even frame the question in terms of sending a single binary bit, since there is a lot more information that is required (such as host IP address, frame number, etc.) These build on the basic idea I described above, but add a lot more layers that are specific to each standard.
Ethernet has several layers of communications protocols; the
datalink layer is different even for different types of Ethernet -- 10Mbit and 100Mbit are not just different speeds but different signalling protocols. This is described in IEEE standard 802.3
The USB protocols are described in the USB Standard, as well as on Jan Axelson's USB Complete website.
If you've never read a standards specification document before, I'd recommend starting with USB -- it's comparatively a bit simpler than Ethernet.
The simple answer is it depends...
Generally computers transmit information as bits, either a 1 or a 0. To indicate a 1 most transmit devices/controllers raise the voltage on a line/output pin to a set value. Eg 3.3v and sink the voltage to grnd. eg 0v when they wish to indicate a 0. The receiver device then monitors the input line/pin voltage and when it crosses a threshold voltage (eg from low to high) it registers the change as a 1. The threshold will be a volt or so below the max (in this case say 2.5v) and the same happens when the voltage drops towards 0. When the receiver detects it below say 1v it registers a 0. This covers a simple on/off yes/no signal.
To get more information, timing is used to let both ends know how long a "bit" is. Think of morse code and dot vs dash.
The circuit designer(chip dev) decides on the thresholds and protocol (timing)
When you start looking at USB or ethernet it works on the same principle but follows a recognized protocol specification. This governs the exact voltages etc to be used and allows interoperability between devices from different manufacturers.
They also include info on error checking and packet sizes etcetc but thats a whole other can of worms :)