The problem of computer addition may be viewed as comprising two distinct tasks. The first is the relatively simple exercise of designing an integer adder. The second is the application of such an adder in the addition of floating-point numbers, which requires the proper alignment of significands based on an analysis of exponents as well as the normalization and rounding of the result. The first section of this chapter addresses some of the issues of integer addition, focusing on carry propagation and generation. The remaining two sections deal with various optimization techniques that are used in the implementation of floating-point addition.