Trovato è una variabile intera e come tale può valere -39, 1297, 0, -5, 1, 33313...
! è un operatore, come sono operatori anche + e /. La differenza è che mentre + e / sono operatori binari (ossia agiscono su due operandi), l'operatore ! è unario (ossia agisce su un solo operando). In pratica quello che fa l'operatore ! è negare l'operando a cui è associato (quindi se trovato è vero allora !trovato sarà falso, se invece trovato è falso allora !trovato sarà vero).
Il significato di vero e falso in relazione ad una variabile intera ti è stato già spiegato da candaluar e AldoBaldo.
Detto questo si deduce che if(!trovato) coincide con if(trovato == false).
Se poi la condizione appena scritta risulti verificata o meno, dipende da quanto vale la variabile trovato.