This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
notes:c4eng:fall2022:projects:dtr0 [2022/09/05 06:34] – Continued Section rgerbino | notes:c4eng:fall2022:projects:dtr0 [2023/09/08 14:31] (current) – [BINARY NUMBERS] nbutler5 | ||
---|---|---|---|
Line 3: | Line 3: | ||
Number systems are a way in which one can represent quantitative values. Certain number systems are used for certain applications. | Number systems are a way in which one can represent quantitative values. Certain number systems are used for certain applications. | ||
- | For example, the decimal number system, also known as base-10, is our typical counting numbers used in daily math. This uses the numbers 0 through 9 to represent a given value: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 | + | For example, the decimal number system, also known as base-10, is our typical counting numbers used in daily math. This uses the numbers 0 through 9 to represent a given value: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16. |
+ | |||
+ | Yet, there are still more number systems that are used. Besides decimal (which is most common) there is hexadecimal which is base-16, octal which is base-8, and binary which is base-2. | ||
====BINARY NUMBERS==== | ====BINARY NUMBERS==== | ||
Line 11: | Line 13: | ||
(These are equivalent to the values 0 through 16 in the decimal number system) | (These are equivalent to the values 0 through 16 in the decimal number system) | ||
- | Computers will always convert the numbers from any number system into binary for the purposes of consistent computation, | + | Computers will always convert the numbers from any number system into binary for the purposes of consistent computation, |
+ | |||
+ | When you say a binary number, pronounce each digit (example, the binary number " | ||
+ | A single binary digit (like " | ||
+ | For example 11010 is five bits long. | ||
+ | The word bit is made up from the words " | ||
====HEXADECIMAL NUMBERS==== | ====HEXADECIMAL NUMBERS==== | ||
The prefix “hexa” stands for six, and the prefix " | The prefix “hexa” stands for six, and the prefix " | ||
- | The hexadecimal number system, also known as base-16 uses the numbers 0 through 9 and the English letters A through F to represent a given value: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 (These are equivalent to the values 0 through 16 in the decimal number system) | + | The hexadecimal number system, also known as base-16, uses the numbers 0 through 9 and the English letters A through F to represent a given value: 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 (These are equivalent to the values 0 through 16 in the decimal number system) |
- | Because the hexadecimal base of 16 can also be written as 2^4, this makes converting between binary and hexadecimal much more intuitive than that of decimal. Each digit of the hexadecimal number system can be represented by a series | + | Because the hexadecimal base of 16 can also be written as 2^4, this makes converting between binary and hexadecimal much more intuitive than that of decimal. Each digit of the hexadecimal number system can be represented by a specific set of four digits in the binary |
+ | |||
+ | In hex, four digits of a binary number can be represented by a single hex digit. Dividing a binary number into 4-bit sets means that each set can have a possible value of between 0000 and 1111, allowing 16 number combinations from 0 to 15. With the base value as 16, the maximum value of a digit is 15. | ||
=====DATA TYPES IN C===== | =====DATA TYPES IN C===== | ||
+ | **Signed char**- This type of data occupies 1 byte of memory (8 bits) and allows expressing a maximum of 256 values. Signed char can contain both positive and negative values along with zero. The range of values is from -128 to 127. | ||
+ | |||
+ | **Unsigned char**- This type of data occupies 1 byte of memory (8 bits) and allows expressing a maximum of 256 values as well. Unlike signed char, unsigned char can only contain positive values and zero. The range of values is from 0 to 255. | ||
+ | |||
+ | **Signed short int**- This type of data occupies 2 bytes of memory (16 bits) and allows expressing a maximum of 65,536 values as well. Signed short int can contain both positive and negative values along with zero. The range of values is from -32,768 to 32,767. | ||
+ | |||
+ | **Unsigned short int**- This type of data occupies 2 bytes of memory (16 bits) and allows expressing a maximum of 65,536 values as well. Unlike signed short int, unsigned short int can only contain positive values and zero. The range of values is from 0 to 65,535. | ||
+ | |||
+ | **Signed int**- This type of data occupies 2 or 4 bytes of memory (16 or 32 bits) depending on the compiler and allows expressing a maximum of 65,536 at 2 bytes or 4, | ||
+ | |||
+ | **Unsigned int**- This type of data occupies 2 or 4 bytes of memory (16 or 32 bits) depending on the compiler and allows expressing a maximum of 65,536 at 2 bytes or 4, | ||
====PRINTF FORMAT SPECIFIERS==== | ====PRINTF FORMAT SPECIFIERS==== | ||
+ | The various printf functions take a format string and optional arguments and produce a formatted sequence of characters for output. In this project there are 2 specifiers that we must include. | ||
+ | |||
+ | First there is the type specifier, the type specifier character specifies how it should interpret the corresponding argument. Should it interpret it as a character, string, pointer, integer, or a float? | ||
+ | |||
+ | Important type specifiers used within this project are; | ||
+ | |||
+ | **%hhd**- Specifies the output type as half of a half of a signed int (4/2/2 = 1 byte) | ||
+ | | ||
+ | **%hhu**- Specifies the output type as half of a half of an unsigned int (4/2/2 = 1 byte) | ||
+ | |||
+ | **%hd** - Specifies the output type as a half of a signed int (4/2 = 2 bytes) | ||
+ | |||
+ | **%hu** - Specifies the output type as half of an unsigned int (4/2 =2 bytes) | ||
+ | |||
+ | **%lld**- Specifies the output type as a signed long long int | ||
+ | |||
+ | **%llu**- Specifies the output type as an unsigned long long int | ||
+ | |||
+ | **%p**- Specifies the output type as an address in hexadecimal digits | ||
=====PROGRAM SPECIFICATIONS===== | =====PROGRAM SPECIFICATIONS===== | ||