Hope the following helps.
From Proton manual
RAM Space Required
Each type of variable requires differing amounts of RAM memory for its allocation. The list below illustrates this.
Float Requires 4 bytes of RAM.
DWord Requires 4 bytes of RAM.
Word Requires 2 bytes of RAM.
Byte Requires 1 byte of RAM.
Bit Requires 1 byte of RAM for every 8 BIT variables used.
Each type of variable may hold a different minimum and maximum value.
FLOAT type variables may theoretically hold a value from -1e37 to +1e38, as well as fractional values, making this the most accurate of the variable family types. However, more so than dword types, this comes at a price as float calculations and comparisons will use more code space within the PICmicro. Use this type of variable sparingly, and only when strictly necessary. Smaller floating point values offer more accuracy.
DWORD type variables may hold a value from -2147483648 to +2147483647. This comes at a price however, as dword calculations and comparisons will use more code space within the PICmicro. Use this type of variable sparingly, and only when necessary.
WORD type variables may hold a value from 0 to 65535, which is usually large enough for most applications. It still uses more memory, but not nearly as much as a dword type.
BYTE type variables may hold a value for 0 to 255, and are the usual work horses of most programs. Code produced for BYTE sized variables is very low compared to word or dword types, and should be chosen if the program requires faster, or more efficient operation.
BIT type variables may hold a 0 or a 1. These are created 8 at a time, therefore declaring a single BIT type variable in a program will not save RAM space, but it will save code space, as BIT type variables produce the most efficient use of code for comparisons etc.
There are modifiers that may also be used with variables. These are HIGHBYTE, LOWBYTE, BYTE0, BYTE1, BYTE2, and BYTE3.
BYTE2, and BYTE3 may only be used in conjunction with a 32-bit dword type variable.
HIGHBYTE and BYTE1 are one and the same thing, when used with a word type variable, they refer to the High byte of a word type variable: -
DIM WRD AS WORD ' Declare a WORD sized variable
DIM WRD_HI AS WRD.HIGHBYTE ' WRD_HI now represents the HIGHBYTE of variable WRD
Variable WRD_HI is now accessed as a byte sized type, but any reference to it actually alters the high byte of WRD. However, if BYTE1 is used in conjunction with a dword type variable, it will extract the second byte. HIGHBYTE will still extract the high byte of the variable, as will BYTE3. The same is true of LOWBYTE and BYTE0, but they refer to the Low Byte of a word type variable: -
DIM WRD AS WORD ' Declare a WORD sized variable
DIM WRD_LO AS WRD.LOWBYTE ' WRD_LO now represents the LOWBYTE of variable WRD
Variable WRD_LO is now accessed as a byte sized type, but any reference to it actually alters the low byte of WRD. The modifier BYTE2 will extract the 3rd byte from a 32-bit dword type variable, as an alias. Likewise BYTE3 will extract the high byte of a 32-bit variable. RAM space for variables is allocated within the PICmicro in the order that they are placed in the BASIC code.