If you need to convert an 8-bit Two’s Complement value of -42 (binary 11010110) into sign-magnitude format, the direct answer is 10101010 (Hex 0xAA). If you are mapping an analog ±10V signal to an 8-bit sign-magnitude word, +10V yields 01111111 and -10V yields 11111111. The digital logic formula substituted for -42 is: extract the MSB as the sign bit (1), then invert the remaining 7 bits and add 1. Magnitude = ~(1010110) + 1 = 0101001 + 1 = 0101010. The analog mapping formula is Magnitude = round((|V_in| / V_ref) * 127), with the sign bit set to 1 if V_in is negative.

The Core Assumption & Neighboring Value Table

The answers above are fixed by two strict assumptions: a bit-depth of N=8 and an ADC Full-Scale Range (FSR) or logic reference of exactly ±10V. In sign-magnitude representation, the Most Significant Bit (MSB) dictates the polarity (0 for positive, 1 for negative), while the remaining bits represent the absolute distance from zero. Unlike Two's Complement, sign-magnitude is symmetrical but suffers from a dual-zero state (00000000 for +0 and 10000000 for -0).

When designing a sign magnitude converter front-end for an ESP32 or Arduino, you must account for signal noise. Below is a mapping table for a nominal 5.0V analog input, showing the ±20% neighboring values and their resulting 8-bit sign-magnitude words. This helps you set software hysteresis thresholds in your firmware.

Analog Input (V) Deviation from 5V Magnitude (Decimal) 8-Bit Sign-Magnitude (Binary) Hex Equivalent
4.0V -20% 51 00110011 0x33
4.5V -10% 57 00111001 0x39
5.0V 0% (Nominal) 64 01000000 0x40
5.5V +10% 70 01000110 0x46
6.0V +20% 76 01001100 0x4C

Why Mains Voltage (120V/230V/3-Phase) is Meaningless Here

A common point of confusion for DIYers building home energy monitors is attempting to apply AC mains math directly to binary word converters. How the answer shifts for 120V vs 230V vs 3-phase: It doesn't. Sign-magnitude is a baseband digital logic encoding scheme. Feeding 120V or 230V RMS directly into an ADC or logic gate will instantly destroy the silicon and poses a severe electrocution hazard. Mains voltages must first be stepped down via Potential Transformers (PTs) or isolated analog front-ends (like the ZMPT101B module) to a safe ±5V or ±10V range before digitization.

Safety & Code Caveat: Any wiring involving mains voltage (>50V AC) requires de-energizing the panel, verifying dead with a CAT III/IV multimeter, and adherence to local NEC-style guidance. Your local AHJ has final authority on PT installation and panel feed-throughs.

Furthermore, when is the conversion meaningless? If you are sampling an AC waveform to calculate Real Power (Watts) and the Power Factor (PF) is unknown, converting the raw sign-magnitude voltage samples into meaningful power units is entirely meaningless. You will only calculate Apparent Power (VA). To get true Watts, your sign-magnitude converter must be paired with a simultaneous current sampling channel (e.g., via an SCT-013 CT clamp) to calculate the phase angle (θ) between voltage and current zero-crossings.

Hardware Decision Tree: Picking Your Converter IC

If your ADC natively outputs Two's Complement (which 95% of modern SAR and Delta-Sigma ADCs do, including the ubiquitous ADS1115), you must convert it to sign-magnitude if your legacy display driver or specific DSP algorithm requires it. Use this decision path to select your hardware or firmware approach.

Condition / Constraint Recommended Approach Concrete Pick / Action
Using a microcontroller (ESP32, Arduino, Pi Pico) with I2C/SPI ADC Firmware Bitwise Conversion Use (val < 0) ? (0x80 | -val) : val in C++
Driving a legacy parallel LCD or DAC directly from an ADC without an MCU Discrete Digital Logic ICs XOR Gates + 4-Bit Binary Adder
High-speed FPGA / CPLD parallel bus (>10 MSPS) Hardware Description Language Verilog: assign sm = {tc[7], tc[6:0] ^ {7{tc[7]}} + tc[7]};
DEFAULT: Building a physical breadboard/PCB logic converter CMOS Logic Family Texas Instruments SN74HC86 (XOR) + SN74HC283 (Adder)

For physical hardware conversion, the concrete pick is the Texas Instruments SN74HC86 Quad 2-Input XOR Gate. By tying one input of each XOR gate to the MSB (sign bit) of the Two's Complement word, the XOR gates act as controlled inverters. When the MSB is 1 (negative), the magnitude bits are inverted. You then feed that output into a 74HC283 4-bit binary full adder (cascaded for 8-bit) with the carry-in tied to the MSB to complete the '+1' step of the Two's Complement reversal.

Step-by-Step Logic Implementation & Verification

When wiring the SN74HC86 and 74HC283 on the bench, follow this sequence to avoid floating input errors:

  1. Power & Ground: Connect VCC (Pin 14) to 5V and GND (Pin 7) to ground on both ICs. Place a 100nF ceramic decoupling capacitor across the power pins of each IC.
  2. XOR Inversion Stage: Route the 7 magnitude bits of your Two's Complement source to the A inputs of the 74HC86. Tie all B inputs of the 74HC86 directly to the MSB (Sign Bit) of the source.
  3. Adder Stage: Route the 7 outputs from the 74HC86 to the A inputs of the 74HC283 adder. Tie the B inputs of the adder to GND (0).
  4. Carry-In Trick: Tie the Carry-In (C0) pin of the 74HC283 directly to the MSB (Sign Bit). This elegantly adds '1' only when the number is negative, completing the magnitude extraction.
  5. Verify: Inject 11111011 (-5 in TC). The XOR outputs 0000100. The adder adds 1 (via C0), yielding 0000101 (5). Prepend the MSB (1) to get 10000101 (-5 in Sign-Magnitude).

FAQ: Edge Cases and Zero Handling

How do I handle the dual-zero problem in sign-magnitude?

In sign-magnitude, 00000000 is +0 and 10000000 is -0. If your downstream logic uses zero-crossing detection for AC waveform timing, you must add an 8-input NOR gate (like the 74HC30) checking the 7 magnitude bits. If the magnitude is zero, force the sign bit LOW to standardize on +0, preventing your firmware from registering a phantom negative zero-crossing.

Can I use a standard DAC to output sign-magnitude?

No. Standard R-2R or resistor-string DACs expect unsigned binary or Two's Complement. If you feed a sign-magnitude word directly into a standard DAC, the negative half of your waveform will appear as massive positive voltage spikes (e.g., 10000001 reads as +127 instead of -1). You must convert back to Two's Complement or use a DAC with a dedicated bipolar offset pin.

What happens if my analog signal exceeds the ±10V reference?

The ADC will rail. In an 8-bit system, any voltage > +10V will output 01111111, and any voltage < -10V will output 11111111. To protect your front-end, place 5.1V Zener diodes (if scaled to ±5V) or use an op-amp limiter circuit before the ADC input to clamp transient spikes from inductive loads.