Let me explain the premise. If you have a communication system, and you know with a very good confidence margin what the bit error rate is, would you be able to exploit the properties of high bit error rate by simply flipping the bits? For example, imagine:

0 1 0 1 0 1 1 1

Is sent as a package to a satellite, which reads:

1 0 1 0 1 0 0 1

Where the bit error rate is .875. If we know that this is the error, we could randomly select a bit that is incorrect and in the worst case, this would result in a bit error rate of now 1 (we assumed that the last bit was the culprit):

1 0 1 0 1 0 0 0 <- Bit flipped (estimated to be the one that is incorrect)

Then, we flip the bits completely to reveal the real bits we first transmitted.

This situation sounds too good to be true, so in the real world, what is preventing us from doing this procedure and is this actually applicable in some scenarios?

EDIT: Appreciate immensely the responses, I will try to respond to each one.

  • 1
    \$\begingroup\$ I think one of the issues you will be facing is that bit error rate is likely to change over time (so not only the error is random but the rate of errors is random too) and thus, you never really know how many errors you will be getting. But I'm no expert on communication theory. \$\endgroup\$
    – Arsenal
    Mar 29, 2021 at 8:01
  • 4
    \$\begingroup\$ Well the theorical worst BER would be 0.5, so you can't estimate if a bit is right or is flipped. That would be a true random bitstream \$\endgroup\$ Mar 29, 2021 at 9:00
  • 2
    \$\begingroup\$ Wouldn't the worst case in this example be to flip a bit that was already incorrect, resulting in a bit error rate of 0.75? This would result in 2 bits being incorrect after we flip the bits completely in the final step, rather than 0. \$\endgroup\$
    – TylerW
    Mar 29, 2021 at 16:31
  • \$\begingroup\$ I'm trying to wrap my head around how you would know that a specific bit is in error. \$\endgroup\$ Mar 30, 2021 at 18:30
  • \$\begingroup\$ @MichaelRichardson there's always FEC (forward error correction) \$\endgroup\$ Mar 31, 2021 at 12:09

7 Answers 7


A bit error rate of 1, if you know there is an error rate of 1, is perfect as you can simply invert all the bits and get the original data.

If you don't know the bit error rate is 1, and therefore don't correct for it, then it is not good.

As a real world example, PCIe during it's link training phase can happily detect polarity inversion of its data lines (positive and negative pins reversed). This produces a BER of ~1, which it will detect and then correct for by inverting the data stream.

  • \$\begingroup\$ By PCIe do you actually mean the hardware bus by that name or is it an acronym collision? \$\endgroup\$
    – Joshua
    Mar 29, 2021 at 20:19
  • \$\begingroup\$ @Joshua hardware bus, aye. \$\endgroup\$ Mar 29, 2021 at 20:48
  • 7
    \$\begingroup\$ @Joshua Not only PCIe, polarity inversion is also supported by Ethernet, USB 3.0, and many other differential links at the PHY layer. \$\endgroup\$ Mar 30, 2021 at 3:04
  • 1
    \$\begingroup\$ If one knew that within a group of 2n bits the error rate would be exactly 50%, one could encode one useful bit of data per group because parity would always be either equal to the original (if n is even) or opposite the original (if n is odd). Error rates are really only meaningful as upper bounds, and once the error rate is allowed (but not required) to be 50% or greater, communication becomes impossible. \$\endgroup\$
    – supercat
    Mar 30, 2021 at 17:11
  • 4
    \$\begingroup\$ @TonyStewartSunnyskyguyEE75 Trick question. BER is a property of communication channels, not of data. \$\endgroup\$ Mar 31, 2021 at 2:26

Bit error rates of greater than 0.5 have no real meaning. The worst case is if you send random noise to the receiver. Then the BER will be 0.5 since there is an even chance of choosing the correct bit. A BER of 0 is perfect. BERs of more than 0.5 are simply mirror images of those under 0.5. As pointed out, a BER of 1 is perfect since the received data is just the inverse of the transmitted data. This is equivalent to cross-correlating 2 signals. If the polarity of the signals is the same, the correlation coefficient is +1 (BER=0). If the polarity of the signals is reversed, the correlation coefficient is -1 (BER=1_. If the 2 signals are not correlated, the correlation coefficien (BER=0.5). Thus a BER of 0.8 is equivalent to a BER of 0.2.


As the previous answer by Barry pointed out, bit error rates greater than 0.5 aren't really meaningful. If the BER is 1.0, we don't say "the BER is 1.0", we say "the channel inverts the signal and has a BER of 0".

But let me dig in to your example and show a conceptual issue:

the bit error rate is .875. If we know that this is the error, we could randomly select a bit that is incorrect and in the worst case, this would result in a bit error rate of now 1 (we assumed that the last bit was the culprit):

1 0 1 0 1 0 0 0 <- Bit flipped (estimated to be the one that is incorrect) Then, we flip the bits completely to reveal the real bits we first transmitted.

The problem is that if the BER is 0.875 (or 0.125) it doesn't mean that every 8th bit is flipped, or even that one bit is flipped in every 8-bit byte.

There could be 80 bits transferred correctly, followed by 10 errors. Or 80 bytes transferred with one error in every other byte, followed by 80 with an average of 1.5 errors per byte. More likely the distribution would be more consistent than that, but it wouldn't be always one error per byte. It would be a mix of bytes with 0 errors, 1 error, 2 errors, 3 errors, etc. (although for a BER of 0.125 with truly random error distribution only 1 in \$8^8\$ would have errors in all 8 bits).

What we can do is introduce a coding scheme that lets us correct errors. For example, we could send 10 bits for every 8 bits of actual information we need to convey. The extra 2 bits contain redundant information that lets us correct an error if any one bit in the 10-bit "byte" has an error. The math required to design these coding schemes to allow correcting the maximum number of errors with the least proportion of added bits gets quite complex and is one of the main concerns of the field of communication theory.

  • \$\begingroup\$ Good work guessing his thinking that every 8th bit is flipped. \$\endgroup\$ Apr 2, 2021 at 3:36

When the BER = \$10^0\$ this means for an average number of bits, not each bit.

If you have random data BER will always be 0.5 and only message error rates can approach MER=1.

BER=1 is just an asymptotic value. (How about 1.1? J/K )

Thus inverting a random number of bits yields the same result. Message error =1.

However, you are getting close to understanding this concept that the other answer ignores.

When looking at different BER curves for the same system but due to different effects such you may notice a sharp difference near BER = 1 to BER = 1%. This depends on, for example, Trellis coding or RLL encoding or randomization or discriminator asymmetry or data pattern (worst case vs best case vs random) or some other eye pattern affecting the property is inherent in the de/modulation scheme.

In the "old days when data was encoded by MFM for magnetic storage without RLL encoding where the edges between or synchronous to clock edges determined the data value. Thus the data pattern had a strong impact on BER for the same SNR. This could easily be measure in very few bits or near BER= 1e0 at some low SNR. At this low SNR level, the jitter quality of the clock recovery also added to the noise of the data significantly in some designs more than others.

Thus for linear Bi-phase or NRZ or RX or HDD MFM modulation schemes, the worst-case pattern was always "6DB" hex or in octal 011 011 011 which put most of the change in frequency where the group delay changes most rapidly in non-ideal channels from 1f to 2f or 00110011 to 1010101 in half bits or full bits. There were other worst-case patterns too.

Although not done at BER=1 bur more like BER=0.1 and the slope of BER/dB or dB/BER changes with all the above variables. So discriminator asymmetry would easily show up for the difference between random and 101010 data by a few % of the bit in phase margin or ratio of bitshift/period of a bit Thus ALL GOOD communication channel designs must have a phase margin budget for each of the constant variables that degrade the channel other than Gaussian noise. This applies to both the data and the clock channel combined.

When you learn to find the weakness in any design, you will often do so by measuring the Window Margin aka phase margin or BER shift or slope shift due to some parameter change.

This was my strength in reverse engineering complex communication channels during Design Validation or Verification Testing formerly called DVT to see if the design margin to each design parameter would stand up against each stress factor from the environment (climatic, mechanical, electrical) to the channel medium fading or ageing or adjacent channel interference.

Thus it is not the certainty of inverting each bit in error when BER=1 that is wrong but it is wise to view the shift in BER near BER = 1 to 0.1 due to the aforementioned variables and examine the change in slope other than simply random data under benign conditions. Often did a quick test with 4 corner environment and voltage margins with vibration, and RATHER than simply test if it worked pass/fail, I would measure the comm channel Window margin so see how much margin was lost for each variable.


Inversion does not mean higher error rate.

Bit error rate is a measure on how efficiently a receiver can decode the information sent by a transmitter. In your example, given that the transmission protocol almost always inverts the data, the factual error rate is 1-0.875 = 0.125.

What is meant by error rate of 1 is a received message irrelevant to the transmitted message.

In your example, if a transmitter sends 01010111 five times, the receiver may receive:






or any other unpredictable message, and the chance that every particular received bit has some sort of relation with the sent corresponding bit is being 0.875

You may think of it as a limit number of errors while decoding the received message for infinite attempts of sending the same message over again. Inverting the numbers, in fact, does not remove information. Replacing the message with a constant, or random, or irrelevant to the input, data, does.

  • \$\begingroup\$ No, as other people have said, BER is how often the bits are wrong. If the BER is 1 then all the bits are wrong all the time, and the receiver must get 10101000. If the receiver gets 00000000 then the BER is 5/8 (0.625) for that message, not 1 \$\endgroup\$
    – user253751
    Mar 31, 2021 at 11:55

A bit error probability of one is the same as a bit error probability of zero. The only difference is at probability of one, you are intentionally forcing errors and wasting your time/effort to force a bad outcome. This requires correct information transfer, or a zero bit error rate on recovery.

Consider this real world case. You can win the Megabucks lottery by selecting 5 out of a set of 40 numbers. Some try to do this all the time at the neighborhood gas station. One can also choose to guess the 35 numbers that will not be selected from the same set of 40 numbers. The probability is the same. The only difference is that in one case you retire early and in the other you no longer have that money for your Starbucks coffee.

  • 1
    \$\begingroup\$ Not intentionally forcing errors. A simple case of this is if you have the two wires of one pair swapped in an improperly-terminated ethernet cable; that gives you a BER of close to 1, without anything being intentional at all (and, in fact, ethernet can detect and correct this situation so the cable still works like normal.) \$\endgroup\$
    – Hearth
    Mar 31, 2021 at 15:40
  • \$\begingroup\$ Ethernet works with the pair swapped because of encoding properties, specifically differential encoding, which still results in no bit errors when properly decoded. \$\endgroup\$
    – TimB
    Mar 31, 2021 at 18:10
  • 1
    \$\begingroup\$ That's not quite what differential encoding means. There is polarity to the signals; the decoder is just able to detect when the polarity is swapped. \$\endgroup\$
    – Hearth
    Apr 1, 2021 at 0:32
  • \$\begingroup\$ No, that is NOT correct at all. The information energy is spread out over two bits. The entire reason for differential encoding is so that polarity does not matter. One doesn’t implement a receiver to detect incorrect polarity then invert if necessary. The act of differential decoding simply produces the correct bit stream regardless of polarity. That is the point of differential encoding as applied in Ethernet and other communication schemes. I’ll leave it to you to research for yourself or write your own question on SE, but this box is too small to educate on the topic properly. \$\endgroup\$
    – TimB
    Apr 1, 2021 at 4:34
  • 1
    \$\begingroup\$ Differential does not mean polarity-free. Ethernet uses manchester code, as far as I'm aware, of opposite polarity on the two lines, and if you switch the lines, you switch every bit of the signal. There are codes that are independent of polarity, like NRZI, but basic manchester encoding is polarity-sensitive. \$\endgroup\$
    – Hearth
    Apr 1, 2021 at 5:34

You could look at this in terms of entropy.

Suppose the intended message initially could be equally likely to be 0 or 1. Its entropy is initially 1 bit.

In transit, the probability of the message being flipped is p. The posterior probabilities from the perspective of the receiver are now p and 1-p. You can see this results in zero entropy both for p = 0 and p = 1.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.