Here is what man says (I'm not sure what you don't understand):
VIRT -- Virtual Image (kb)
The total amount of virtual memory used by the task. It includes all code, data and shared libraries plus pages that have been swapped out. (Note: you can define the STATSIZE=1 environment variable and the VIRT will be calculated from the /proc/#/state VmSize field.)
VIRT = SWAP + RES.
RES -- Resident size
The non-swapped physical memory a task has used.
RES = CODE + DATA.
Resident size is the size of the binary code that is run that is controlling the program PLUS the amount of data that the program is using which is NOT swapped to disk. It is basically the amount of physical memory used.
The virtual image is the total of all the memory used by the task, both physical AND swap.