man ping
If ping does not receive any reply packets at all it will exit with code 1. If a packet count and deadline are both specified, and fewer than count packets are received by the time the deadline has arrived, it will also exit with code 1. On other error it exits with code 2. Otherwise it exits with code 0. This makes it possible to use the exit code to see if a host is alive or not.
Т.е. 1 возвращается когда не пришёл ни один ответ, или если задано число пакетов и дедлайн, и приходят не все ответы. А если задано только число пакетов (ping -c 4 host) и часть потерялась, возвращается 2 или 0?