When you are writing bare-metal C for an ESP32, configuring port registers on an ATmega328P, or debugging a shift register chain on your workbench, you are not thinking in base-10. You are thinking in bits. A binary to denary table (base-2 to base-10) is the fundamental lookup tool for translating hardware-level logic states into human-readable values. Whether you are mapping a 8-bit DIP switch array to a microcontroller input or calculating the maximum payload of a 16-bit timer, having the exact threshold values memorized or bookmarked saves hours of debugging.

This reference provides the critical architectural boundaries for 4-bit, 8-bit, and 16-bit systems, grounded in standard positional numeral systems (ISO/IEC 80000-2) and standard digital logic practices. We will cover how to read the table, how signed integer limits 'derate' your maximum positive values, and what this table cannot tell you about memory architecture.

How to Read This Binary to Denary Reference Table

Before jumping to the numbers, you need to understand the columns and how they apply to your specific hardware installation. This table is structured around standard base-2 positional notation, cross-referenced with hexadecimal and two's complement signed limits.

Column Breakdown:
  • Binary (Base-2): The raw logic states (0V/GND or 3.3V/5V). Read from right to left (Least Significant Bit to Most Significant Bit).
  • Denary (Base-10 Unsigned): The standard positive integer value. This is what your serial monitor prints when you use an unsigned integer type.
  • Signed 8-Bit (Two's Complement): The 'derated' value. If your microcontroller register is configured as a signed integer (e.g., int8_t in C), values above 127 wrap into negative numbers.
  • Hex (Base-16): The standard shorthand for memory addresses and register masks (e.g., 0xFF).

The Master Binary to Denary Table (Quick-Jump Boundaries)

While a literal table of all 65,536 16-bit combinations is impractical for a single page, engineers and makers rarely need to look up arbitrary mid-range numbers. You need the bit-flip boundaries, power-of-2 thresholds, and register limits. The table below provides the complete 4-bit sequence, all critical 8-bit boundaries, and the 16-bit architectural limits. Use the bookmark-friendly IDs to jump to your required register size.

Binary (Base-2) Denary (Unsigned) Signed 8-Bit Hex Hardware Context / Register Note
Complete 4-Bit Sequence (Nibble)
0000000x0Logic LOW / Cleared Register
0001110x1Bit 0 set
0010220x2Bit 1 set
0011330x3Bits 0-1 set
0100440x4Bit 2 set
0101550x5Bits 0,2 set
0110660x6Bits 1,2 set
0111770x7Max positive 3-bit
10008-80x8Bit 3 set (Signed wraps negative)
10019-70x9Bits 0,3 set
101010-60xABits 1,3 set
101111-50xBBits 0,1,3 set
110012-40xCBits 2,3 set
110113-30xDBits 0,2,3 set
111014-20xEBits 1,2,3 set
111115-10xFMax 4-bit unsigned / -1 signed
Critical 8-Bit Boundaries (1 Byte)
0001 000016160x10Bit 4 set
0010 000032320x20Bit 5 set
0100 000064640x40Bit 6 set
0111 11111271270x7FMAX 8-bit Signed Positive
1000 0000128-1280x80Bit 7 set (Signed overflow to MIN)
1100 0000192-640xC0Bits 6,7 set
1111 1111255-10xFFMAX 8-bit Unsigned / All pins HIGH
Critical 16-Bit Boundaries (2 Bytes / Standard Timer Limits)
0000 0001 0000 00002562560x01009th bit set (Overflows 8-bit register)
0000 0100 0000 00001,0241,0240x04001 KB memory boundary
0111 1111 1111 111132,76732,7670x7FFFMAX 16-bit Signed Positive
1000 0000 0000 000032,768-32,7680x800015th bit set (Signed overflow)
1111 1111 1111 111165,535-10xFFFFMAX 16-bit Unsigned (Timer rollover)

Source: Standard positional numeral system base-2 conversion per ISO/IEC 80000-2, with two's complement signed integer limits standard in C/C++ (ISO/IEC 9899).

Register Limits, Bit-Shifting, and Derating Your Values

In wire sizing, 'derating' reduces ampacity due to thermal constraints. In digital logic and microcontroller programming, derating refers to the reduction of your maximum positive value when switching from unsigned to signed data types, or the loss of data when bit-shifting beyond your hardware's register width.

Which Column Applies to Your Installation?

Your 'installation' in this context is your target microcontroller's architecture. If you are programming an older Arduino Uno (ATmega328P), your default port registers (like PORTB or PINB) are strictly 8-bit. Writing a denary value of 256 to an 8-bit register will result in a silent overflow, wrapping back to 0. If you are using an ESP32-WROOM-32, the GPIO registers (like GPIO_OUT_REG) are 32-bit, but the physical pins are still mapped to specific bit positions. Always match your denary value to the physical bit-width of the hardware register you are manipulating.

How Signed Limits 'Derate' the Base Value

Look at the 1000 0000 row in the table. As an unsigned 8-bit integer, it is a healthy 128. But if your compiler treats that byte as a signed int8_t, the Most Significant Bit (MSB) becomes the sign bit. The value instantly 'derates' to -128. This two's complement wrap-around is the number one cause of erratic motor controller behavior and sensor misreads when hobbyists accidentally cast unsigned ADC readings into signed variables.

What This Table Cannot Tell You

A binary to denary table is a mathematical absolute, but it lacks hardware context. Here is what you must verify on the bench:

  • Endianness: When combining two 8-bit bytes into a 16-bit denary value (e.g., reading an I2C temperature sensor like the BME280), the table won't tell you if the Most Significant Byte comes first (Big-Endian) or last (Little-Endian). You must check the sensor's datasheet.
  • Floating Point (IEEE 754): This table only covers integers. If you are trying to decode a 32-bit float transmitted over UART, the binary sequence does not map linearly to denary. It requires IEEE 754 mantissa and exponent extraction.
  • Binary Coded Decimal (BCD): Some legacy RTC (Real Time Clock) modules output time in BCD. In BCD, the binary 1001 0110 does not equal denary 150; it equals 96 (9 and 6 in denary). Always verify if your peripheral uses pure binary or BCD.

Binary to Denary Table FAQ

How do I convert a 16-bit binary to denary table value manually?

Write the bit positions above the binary string, starting from 0 on the far right up to 15 on the far left (1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768). Add together only the position values where the binary bit is a 1. For example, 0000 0000 0000 1010 has 1s in the 8 and 2 positions. 8 + 2 = denary 10.

Why does my binary to denary table show negative numbers for 8-bit values over 127?

This is due to Two's Complement, the standard method computers use to represent signed integers. In an 8-bit system, the 8th bit (the 128 column) is hijacked to act as a negative sign indicator. Therefore, the maximum positive denary value is 127 (0111 1111). Any binary value with the MSB set to 1 is interpreted as a negative number, ranging from -1 to -128.

What is the difference between a denary and decimal conversion?

There is no mathematical difference. 'Denary' is simply the preferred term in British, Commonwealth, and some international educational systems to describe the base-10 numeral system, distinguishing it clearly from 'decimal fractions'. In US-centric programming and engineering, 'decimal' is used interchangeably to mean base-10 integers. Both refer to the exact same numbers in this table.

How do bitwise shifts affect my binary to denary conversion?

A left bitwise shift (<< 1) multiplies the denary value by 2, provided it does not overflow the register width. A right shift (>> 1) divides the denary value by 2, discarding the remainder (the least significant bit). If you shift an 8-bit denary value of 128 (1000 0000) left by one position, the 1 falls off the edge of the 8-bit register, and the result wraps to denary 0, not 256.