Is there a way to count the number of high inputs with logic gates?
No. There isn't. If you want a binary number in which the nth output represents the place value of 2n, you have to cascade adders. Keep in mind though that an adder is just an AND gate for the carry bit, and an XOR gate for the sum bit.