Each channel of Orthogonal Frequency Division Multiplexing(OFDM) system has its own fading characteristic. The system resources will not be made the best of if the same modulation mode is adopted. This paper proposes an efficient bit and power allocation algorithm for single user OFDM system under limited system capacity and a certain Bit Error Rate(BER). When the required BER is below 10-3,the proposed algorithm reduces the sending power by almost 2.5 dB compared with Chow algorithm. It also significantly reduces the time consuming under the constraint of system capacity. The simulation results show the effectiveness of this algorithm.