*Unsigned base 2 adder:*
*x*_{m-1}...*x*_{0} + *y*_{m-1}...*y*_{0} + *c*_{0}(see Figure 4.1)

- Full adder:
*c*_{out}*s*= (*x*+*y*+*c*_{in})_{2} - Example:
*x*=0,*y*=1,*c*_{in}=1*s*=0,*c*_{out}=1 - this is a ripple carry adder (順次桁上げ加算器)
- operation is slow because the carry bit is propagated through every adder

*2's Complement subtracter*

- 1's complement is easier to compute
- 2's complement is easier to use

*2's Complement adder/subtracter*

- subtract control = 0 for addition, 1 for subtraction

*Fast addition by carry lookahead* (桁上げ先見)

- determine the carry bits in advance
*G*_{j}=1 if digit*j*generates a carry*P*_{j}=1 if a carry is propagated from input to output of digit*j**G*_{j}=*x*_{j}*y*_{j};*P*_{j}=*x*_{j}+*y*_{j}- therefore,
*c*_{j+1}=*G*_{j}+*P*_{j}*c*_{j}

- recursive calculation in groups of 2

*8-bit carry lookahead adder*

- for an
*m*-bit adder: - the delay for a carry lookahead adder is proportional to
- the delay for a ripple carry adder is proportional to
*m*