Data Type System
Introduction
In our data type system, we have a set of 10 primitive types. The types available are:

BIT

U8 U16 U32 U64

S8 S16 S32 S64

F16
Each type carries specific properties that determine the range of values it can hold, and the amount of memory it takes up in the system.
Details of Types

BIT: A BIT represents a binary digit, which is the smallest unit of data in a computer system. It can hold one of two values, 0 or 1.

U8: U8 is an unsigned 8bit integer. "Unsigned" means it can only represent nonnegative whole numbers. Given it’s 8bit, it can represent values from 0 to 255.

U16: U16 is an unsigned 16bit integer. It can represent values from 0 to 65,535.

U32: U32 is an unsigned 32bit integer. It can represent values from 0 to 4,294,967,295.

U64: U64 is an unsigned 64bit integer. It can represent values from 0 to 18,446,744,073,709,551,615.

S8: S8 is a signed 8bit integer. "Signed" means it can represent both positive and negative values. Given it’s 8bit, it can represent values from 128 to 127.

S16: S16 is a signed 16bit integer. It can represent values from 32,768 to 32,767.

S32: S32 is a signed 32bit integer. It can represent values from 2,147,483,648 to 2,147,483,647.

S64: S64 is a signed 64bit integer. It can represent values from 9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.

F16: F16 is a 16bit floating point number. Floating point numbers can represent real numbers, including fractions and numbers with a decimal point. The range and precision of these numbers are implementationdependent, but they generally provide a compromise between precision and range, allowing you to represent numbers as large as \$6.55 * 10^4\$ and as small as \$6.10 * 10^5\$.
Each of these data types serves a specific purpose and can be used to optimize memory usage and computational performance in your system.