The concept of spectrum sharing has received increasing interest in an attempt to alleviate the spectrum scarcity issue. In this paper, the problem of K pairs of cognitive radios sharing N available channels and its associated problem of optimal power allocation across users and channels are studied. A new metric indicating user satisfaction in both data rate and power consumption is formulated. Joint channel and power allocation algorithms are designed for both orthogonal transmission and interference transmission. These algorithms are then extended for cognitive radios equipped with multiple antennas. Numerical results demonstrate the efficiency of the proposed algorithms. The performance comparison is conducted for orthogonal and interference transmissions under different interference scenarios. The performance gains by allowing interference transmission and by using multiple antennas at transceivers are demonstrated.