<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Redundant_binary_representation</id>
	<title>Redundant binary representation - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Redundant_binary_representation"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Redundant_binary_representation&amp;action=history"/>
	<updated>2026-05-04T20:57:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Redundant_binary_representation&amp;diff=7083094&amp;oldid=prev</id>
		<title>109.243.0.15 at 20:28, 28 February 2025</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Redundant_binary_representation&amp;diff=7083094&amp;oldid=prev"/>
		<updated>2025-02-28T20:28:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;redundant binary representation (RBR)&amp;#039;&amp;#039;&amp;#039; is a [[numeral system]] that uses more bits than needed to represent a single binary [[Numerical digit|digit]] so that most numbers have several representations. An RBR is unlike usual [[binary numeral system]]s, including [[two&amp;#039;s complement]], which use a single bit for each digit. Many of an RBR&amp;#039;s properties differ from those of regular binary representation systems. Most importantly, an RBR allows addition without using a typical carry.&amp;lt;ref&amp;gt;{{Cite journal |first1=Dhananjay S. |last1=Phatak |first2=Israel |last2=Koren |title=Hybrid Signed-Digit Number Systems: A Unified Framework for Redundant Number Representations with Bounded Carry Propagation Chains |date=August 1994 |journal=IEEE Transactions on Computers |volume=43 |issue=8 |pages=880&amp;amp;ndash;891 |doi=10.1109/12.295850 |url=http://euler.ecs.umass.edu/research/PhKo-IEEETC-1994.pdf|citeseerx=10.1.1.352.6407 }}&amp;lt;/ref&amp;gt; When compared to non-redundant representation, an RBR makes [[bitwise operation|bitwise logical operation]] slower, but [[arithmetic operation#Arithmetic operations|arithmetic operations]] are faster when a greater bit width is used.&amp;lt;ref&amp;gt;{{cite web |first=Louis Philippe |last=Lessard |title=Fast Arithmetic on FPGA Using Redundant Binary Apparatus |year=2008 |url=http://www.louislessard.com/rbin/ |access-date=2015-09-12}}&amp;lt;/ref&amp;gt; Usually, each digit has its own sign that is not necessarily the same as the sign of the number represented. When digits have signs, that RBR is also a [[signed-digit representation]].&lt;br /&gt;
&lt;br /&gt;
==Conversion from RBR==&lt;br /&gt;
An RBR is a [[positional notation|place-value notation system]]. In an RBR, [[Numerical digit|digit]]s are &amp;#039;&amp;#039;pairs&amp;#039;&amp;#039; of bits, that is, for every place, an RBR uses a pair of bits. The value represented by a redundant digit can be found using a translation table. This table indicates the mathematical value of each possible pair of bits.&lt;br /&gt;
&lt;br /&gt;
As in conventional binary representation, the [[integer]] value of a given representation is a weighted sum of the values of the digits. The weight starts at 1 for the rightmost position and goes up by a factor of 2 for each next position. Usually, an RBR allows negative values. There is no single sign bit that tells if a redundantly represented number is positive or negative. Most integers have several possible representations in an RBR.&lt;br /&gt;
&lt;br /&gt;
Often one of the several possible representations of an integer is chosen as the &amp;quot;canonical&amp;quot; form, so each integer has only one possible &amp;quot;canonical&amp;quot; representation; [[non-adjacent form]] and two&amp;#039;s complement are popular choices for that canonical form.&lt;br /&gt;
&lt;br /&gt;
An [[integer]] value can be converted back from an RBR using the following formula, where &amp;#039;&amp;#039;n&amp;#039;&amp;#039; is the number of digits and &amp;#039;&amp;#039;d&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; is the interpreted value of the &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-th digit, where &amp;#039;&amp;#039;k&amp;#039;&amp;#039; starts at 0 at the rightmost position:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\sum_{k=0}^{n-1} d_k 2^k&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The conversion from an RBR to &amp;#039;&amp;#039;n&amp;#039;&amp;#039;-bit two&amp;#039;s complement can be done in O(log(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;)) time using a [[prefix adder]].&amp;lt;ref&amp;gt;{{Cite conference |first1=Sreehari |last1=Veeramachaneni |first2=M. Kirthi |last2=Krishna |first3=Lingamneni |last3=Avinash |first4=Sreekanth |last4=Reddy P. |first5=M.B. |last5=Srinivas |title=Novel High-Speed Redundant Binary to Binary converter using Prefix Networks  |conference=IEEE International Symposium on Circuits and Systems (ISCAS 2007) |date=May 2007 |location=New Orleans |doi=10.1109/ISCAS.2007.378170 |url=http://euler.ecs.umass.edu/research/PhKo-IEEETC-1994.pdf}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example of redundant binary representation==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;right&amp;quot; style=&amp;quot;margin-left: 3em; text-align:center;&amp;quot;&lt;br /&gt;
|+ Example of translation table for a digit&lt;br /&gt;
! Digit !! Interpreted value&lt;br /&gt;
|-&lt;br /&gt;
| 00 || −1&lt;br /&gt;
|-&lt;br /&gt;
| 01 || &amp;amp;nbsp;0&lt;br /&gt;
|-&lt;br /&gt;
| 10 || &amp;amp;nbsp;0&lt;br /&gt;
|-&lt;br /&gt;
| 11 || &amp;amp;nbsp;1&lt;br /&gt;
|}&lt;br /&gt;
Not all redundant representations have the same properties. For example, using the translation table on the right, the number 1 can be represented in this RBR in many ways: &amp;quot;01·01·01·11&amp;quot; (0+0+0+1), &amp;quot;01·01·10·11&amp;quot; (0+0+0+1), &amp;quot;01·01·11·00&amp;quot; (0+0+2−1), or &amp;quot;11·00·00·00&amp;quot; (8−4−2−1). Also, for this translation table, flipping all bits ([[NOT gate]]) corresponds to finding the [[additive inverse]] ([[multiplication]] by [[−1]]) of the integer represented.&amp;lt;ref&amp;gt;{{Cite journal |first1=Marcel |last1=Lapointe |first2=Huu Tue |last2=Huynh |first3=Paul |last3=Fortier |title=Systematic Design of Pipelined Recursive Filters |journal=IEEE Transactions on Computers |volume=42 |issue=4 |date=April 1993 |pages=413&amp;amp;ndash;426 |doi=10.1109/12.214688}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case: &amp;lt;math&amp;gt;d_k \isin \{ -1, 0, 1 \}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arithmetic operations==&lt;br /&gt;
Redundant representations are commonly used inside high-speed [[arithmetic logic unit]]s.&lt;br /&gt;
&lt;br /&gt;
In particular, a [[carry-save adder]] uses a redundant representation.{{Cn|date=September 2015}}&lt;br /&gt;
&lt;br /&gt;
===Addition===&lt;br /&gt;
[[Image:Redundant binary adder.png|thumb|right|Schematic of an adder unit using [[full adder]] block (z = x + y)]]&lt;br /&gt;
The addition operation in all RBRs is carry-free, which means that the carry does not have to propagate through the full width of the addition unit. In effect, the addition in all RBRs is a constant-time operation. The addition will always take the same amount of time independently of the bit-width of the [[operand]]s. This does not imply that the addition is always faster in an RBR than its [[two&amp;#039;s complement]] equivalent, but that the addition will eventually be faster in an RBR with increasing bit width because the two&amp;#039;s complement addition unit&amp;#039;s delay is proportional to log(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;) (where &amp;#039;&amp;#039;n&amp;#039;&amp;#039; is the bit width).&amp;lt;ref&amp;gt;{{Cite conference |author1=Yu-Ting Pai |author2=Yu-Kumg Chen |title=The fastest carry lookahead adder |conference=Second IEEE International Workshop on Electronic Design, Test and Applications (DELTA &amp;#039;04) |location=Perth |date=January 2004 |doi=10.1109/DELTA.2004.10071 |url=http://galia.fc.uaslp.mx/~rmariela/digital/FastCLA.pdf}}&amp;lt;/ref&amp;gt; Addition in an RBR takes a constant time because each digit of the result can be calculated independently of one another, implying that each digit of the result can be calculated in parallel.&amp;lt;ref&amp;gt;{{Cite conference |first1=Bijoy |last1=Jose |first2=Damu |last2=Radhakrishnan |title=Delay Optimized Redundant Binary Adders |conference=13th IEEE International Conference on Electronics, Circuits and Systems, 2006. (ICECS &amp;#039;06) |date=December 2006 |location=Nice |doi=10.1109/ICECS.2006.379838}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subtraction===&lt;br /&gt;
Subtraction is the same as the addition except that the additive inverse of the second operand needs to be computed first. For common representations, this can be done on a digit-by-digit basis.&lt;br /&gt;
&lt;br /&gt;
=== Multiplication ===&lt;br /&gt;
&lt;br /&gt;
Many [[hardware multiplier]]s internally use [[Booth encoding]], a redundant binary representation.&lt;br /&gt;
&lt;br /&gt;
==Logical operations==&lt;br /&gt;
Bitwise logical operations, such as [[AND gate|AND]], [[logical disjunction|OR]] and [[XOR]], are not possible in redundant representations. While it is possible to do [[bitwise operation]]s directly on the underlying bits inside an RBR, it is not clear that this is a meaningful operation; there are many ways to represent a value in an RBR, and the value of the result would depend on the representation used.&lt;br /&gt;
&lt;br /&gt;
To get the expected results, it is necessary to convert the two operands first to non-redundant representations. Consequently, logical operations are slower in an RBR. More precisely, they take a time proportional to log(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;) (where &amp;#039;&amp;#039;n&amp;#039;&amp;#039; is the number of digits) compared to constant time in [[two&amp;#039;s complement]].&lt;br /&gt;
&lt;br /&gt;
It is, however, possible to &amp;#039;&amp;#039;partially&amp;#039;&amp;#039; convert only the least-significant portion of a redundantly represented number to non-redundant form. This allows operations, such as masking off the low &amp;#039;&amp;#039;k&amp;#039;&amp;#039; bits, to be done in log(&amp;#039;&amp;#039;k&amp;#039;&amp;#039;) time.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Redundant Binary Representation}}&lt;br /&gt;
{{Processor technologies|state=collapsed}}&lt;br /&gt;
[[Category:Binary arithmetic]]&lt;br /&gt;
[[Category:Non-standard positional numeral systems]]&lt;/div&gt;</summary>
		<author><name>109.243.0.15</name></author>
	</entry>
</feed>