This is an excerpt form an unfinished book being written by Michael Calkins. "qbasicmichael"+"@gmail.com". Accuracy is not guaranteed. Revision: October 1, 2011, 8:17 AM. Open this file with Notepad, and check "Word Wrap" under the "Format" menu, if it isn't already checked. I recommend using the Lucida Console font. This file should be downloaded as a binary file. It is encoded as a UTF-8 plain text file with CRLF line endings. ---- Appendix: Number systems Decimal: The number system we humans use for most things is the decimal (base ten) number system. This number system has ten numerals. The numerals: "0" --- zero "1" --- one "2" --- two "3" --- three "4" --- four "5" --- five "6" --- six "7" --- seven "8" --- eight "9" --- nine These numerals are arranged into a sequence, in which the relative position determines the position's "place value". Decimal place values are powers of ten. The position immediately left of the decimal point (the rightmost position of an integer) has a place value of ten to the power of zero. Positions left of it use increasing exponents. Positions right of it (right of the decimal point) use negative exponents. The place values: ←etc 10^3 10^2 10^1 10^0 dec point 10^-1 10^-2 10^-3 etc→ 10^0 is 1 10^1 is 10 10^2 is 100 10^2 is 1000 etc... 10^-1 is .1 10^-1 is .01 10^-1 is .001 etc... For the purposes of my discussion, I will number the positions by their exponents. So, the position immediately left of the point will be position 0. The numeral's value is multiplied by the place value of the position it occupies. This is done for each numeral, and the results are added together to form the value of the number as a whole. For example, consider the decimal integer: 2053 The first position (from the right) contains a "3". 3 * 10^0 is 3. The second position contains a "5". 5 * 10^1 is 50. The third position contains a "0". 0 * 10^2 is 0. The fourth position contains a "2". 2 * 10^3 is 2000. 2000+0+50+3 is 2053. ┌──────────────┬───────┬───────┬───────┬───────┐ │ position │ 3 │ 2 │ 1 │ 0 │ ├──────────────┼───────┼───────┼───────┼───────┤ │ place value │ 1000 │ 100 │ 10 │ 1 │ ├──────────────┼───────┼───────┼───────┼───────┤ │ numeral │ 2 │ 0 │ 5 │ 3 │ ├──────────────┼───────┼───────┼───────┼───────┤ │ numeral * pv │ 2000 │ 0 │ 50 │ 3 │ └──────────────┴───────┴───────┴───────┴───────┘ Binary: Binary follows the same rules, but is a base two number system. It has two numerals, and place values are powers of two. The numerals: "0" --- zero "1" --- one The place values: ← etc 2^3 2^2 2^1 2^0 binary point 2^-1 2^-2 2^-3 etc → 2^0 is 1 2^1 is 2 2^2 is 4 2^3 is 8 2^4 is 16 2^5 is 32 2^6 is 64 2^7 is 128 2^8 is 256 2^9 is 512 2^10 is 1024 2^11 is 2048 2^12 is 4096 2^13 is 8192 2^14 is 16384 2^15 is 32768 2^16 is 65536 etc... 2^-1 is .5 2^-2 is .25 2^-3 is .125 2^-4 is .0625 etc... In binary, places are referred to as bits. For example, consider the binary integer: 11010111 bin The first bit (from the right) is 1. 1 * 2^0 is 1. The second bit is 1. 1 * 2^1 is 2. The third bit is 1. 1 * 2^2 is 4. The fourth bit is 0. 0 * 2^3 is 0. The fifth bit is 1. 1 * 2^4 is 16. The sixth bit is 0. 0 * 2^5 is 0. The seventh bit is 1. 1 * 2^6 is 64. The eighth bit is 1. 1 * 2^7 is 128. 128+64+0+16+0+4+2+1 is 215. So, 11010111 bin is 215 dec. ┌──────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │ pos │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │ ├──────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ │ pv │ 128 │ 64 │ 32 │ 16 │ 8 │ 4 │ 2 │ 1 │ ├──────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ │ num │ 1 │ 1 │ 0 │ 1 │ 0 │ 1 │ 1 │ 1 │ ├──────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ │num*pv│ 128 │ 64 │ 0 │ 16 │ 0 │ 4 │ 2 │ 1 │ └──────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ That is how you convert binary into decimal. Converting from decimal to binary is done by finding the largest power of two that is less than or equal to the number. Divide the number by it. The integer portion of the result is the value of the bit corresponding to the power of you divided by. Continue doing this until the remainder of the division is zero. For example, to convert 215 decimal to binary: 2^7 is the largest power of two that is <= to 215. 215 / 128 is 1, remainder 87. So bit 7, the eighth bit from the right, is 1. 87 / 64 is 1 remainder 23. Bit 6 is 1. 23 / 32 is 0 remainder 23. Bit 5 is 0. 23 / 16 is 1 remainder 7. Bit 4 is 1. 7 / 8 is 0 remainder 7. Bit 3 is 0. 7 / 4 is 1 remainder 3. Bit 2 is 1. 3 / 2 is 1 remainder 1. Bit 1 is 1. 1 / 1 is 1 remainder 0. Bit 0 is 1. The remainder has reached 0; we are done. So, 215 dec is 11010111 bin. Computer memory uses groups of 8 bits. Each group of 8 bits is a byte. Computers usually operate on data that is 8 bits (a byte), 16 bits (a word), 32 bits (a dword (double word)), 64 bits (a qword (quad word)), or 128 bits (a paragraph). Hexadecimal: The fact of the matter is that binary can be a little cumbersome for humans. Imagine a 32 bit number expressed in binary. It would be a lot of ones and zeros. It would be easy to confuse the place of each one. For the sake of humans who work with computers, the hexadecimal system is used. Hexadecimal is a base sixteen number system. Its has sixteen numerals, and place values are powers of sixteen. The numerals: "0" --- zero "1" --- one "2" --- two "3" --- three "4" --- four "5" --- five "6" --- six "7" --- seven "8" --- eight "9" --- nine "a" --- ten "b" --- eleven "c" --- twelve "d" --- thirteen "e" --- fourteen "f" --- fifteen The place values: ← etc 16^3 16^2 16^1 16^0 hex point 16^-1 16^-2 etc → 16^0 is 1 16^1 is 16 16^2 is 256 16^3 is 4096 16^4 is 65536 etc... 16^-1 is .0625 16^-2 is .00390625 etc... Hexadecimal numbers are usually prefixed with "0x" to designate them as hex. For example, consider the hexadecimal number: 0x7be9 The first numeral (from the right) is "9". 9 * 16^0 is 9. The second numeral is "e". 14 * 16^1 is 224. The third numeral is "b". 11 * 16^2 is 2816. The fourth numeral is "7". 7 * 16^3 is 28672. 28672+2816+224+9 is 31721. ┌──────────────┬───────┬───────┬───────┬───────┐ │ position │ 3 │ 2 │ 1 │ 0 │ ├──────────────┼───────┼───────┼───────┼───────┤ │ place value │ 4096 │ 256 │ 16 │ 1 │ ├──────────────┼───────┼───────┼───────┼───────┤ │ numeral │ 7 │ b │ e │ 9 │ ├──────────────┼───────┼───────┼───────┼───────┤ │ numeral * pv │ 28672 │ 2816 │ 224 │ 9 │ └──────────────┴───────┴───────┴───────┴───────┘ Converting from decimal to hexadecimal involves the same process as converting from decimal to binary. Find the largest power of sixteen that is less than or equal to the number. Divide the number by it. The integer portion of the result is the value of the numeral that belongs in the place corresponding to the power of you divided by. Continue doing this until the remainder of the division is zero. For example, to convert 65117 decimal to hexadecimal: 16^3 is the largest power of sixteen that is <= to 65117. 65117 / 4096 is 15, remainder 3677. So, position 3, the fourth bit from the right, holds "f". 3677 / 256 is 14, remainder 93. So, position 2 holds "e". 93 / 16 is 5, remainder 13. So, position 1 holds "5". 13 / 1 is 13, remainder 0. So, position 0 holds "d". The remainder has reached 0; we are done. So, 65117 decimal is 0xfe5d. The reason hexadecimal is so convenient is that sixteen is itself 2^4. For this reason, every hexadecimal place encompasses exactly four binary places. This means that every hexadecimal numeral corresponds to a sequence of four binary numerals. hex --- binary 0 --- 0000 1 --- 0001 2 --- 0010 3 --- 0011 4 --- 0100 5 --- 0101 6 --- 0110 7 --- 0111 8 --- 1000 9 --- 1001 a --- 1010 b --- 1011 c --- 1100 d --- 1101 e --- 1110 f --- 1111 Hexadecimal is simply abbreviated binary. That is how it is used by computer programmers and technicians. Remember that a byte is 8 bits. Every byte, therefore can be expressed as a two place hexadecimal number. Conversion between binary and hexadecimal is very straightforward. To convert from binary to hexadecimal, simply divide the binary number into groups of 4 bits, and find which pattern in the above list matches. To convert from hexadecimal to binary, simply substitute the corresponding pattern from the above list for each hexadecimal numeral. Thus: 1101 0111 d 7 So, 11010111 binary is 0xd7. f e 5 d 1111 1110 0101 1101 so 0xfe5d is 1111111001011101 binary. You can see that "fe5d" is a lot easier to read or remember than "1111111001011101", and yet it still corresponds to the underling binary bits. This is the reason programmers rely on hexadecimal so much. ---- Appendix: Boolean logic Boolean logic deals with two states, true and false. For this reason, Boolean logic and the binary number system go very well together. "True", "On", and the binary numeral "1" are all synonyms. "False", "Off", and the binary bit "0" are all synonyms. Below, I will use the binary versions of true and false. Boolean logic uses several operators, such as AND, OR, XOR, and NOT, among others. NOT takes one input; it is simple inversion. The others discussed here each take 2 inputs. AND outputs true if both inputs are true. 0 AND 0 is 0 0 AND 1 is 0 1 AND 0 is 0 1 AND 1 is 1 Organized into a truth table: (sort of like a multiplication table, but for logic) AND │ 0 │ 1 ────┼───┼─── 0 │ 0 │ 0 ────┼───┼─── 1 │ 0 │ 1 OR outputs true if either input is true. 0 OR 0 is 0 0 OR 1 is 1 1 OR 0 is 1 1 OR 1 is 1 OR │ 0 │ 1 ────┼───┼─── 0 │ 0 │ 1 ────┼───┼─── 1 │ 1 │ 1 XOR (eXclusive OR) outputs true if only one input is true. 0 XOR 0 is 0 0 XOR 1 is 1 1 XOR 0 is 1 1 XOR 1 is 0 XOR │ 0 │ 1 ────┼───┼─── 0 │ 0 │ 1 ────┼───┼─── 1 │ 1 │ 0 NOT outputs the inverse of its input NOT 0 is 1 NOT 1 is 0 NOT │ 0 │ 1 ────┼───┼─── │ 1 │ 0 NAND (NOT AND) outputs true if both inputs either input is false. 0 NAND 0 is 1 0 NAND 1 is 1 1 NAND 0 is 1 1 NAND 1 is 0 NAND│ 0 │ 1 ────┼───┼─── 0 │ 1 │ 1 ────┼───┼─── 1 │ 1 │ 0 NOR (NOT OR) outputs true if both inputs are false. 0 NOR 0 is 1 0 NOR 1 is 0 1 NOR 0 is 0 1 NOR 1 is 0 NOR │ 0 │ 1 ────┼───┼─── 0 │ 1 │ 0 ────┼───┼─── 1 │ 0 │ 0 Modern computer hardware relies on logic gates constructed using transistors. Computer microprocessors also provide logic operation instructions that can be used by software. Oftentimes, Boolean logical operations will be performed on numbers. In this case, it is called bitwise logic, because the operations are performed on a per bit basis. The logic is performed using as inputs the bits from places corresponding to each other in each input number, and the output goes into the corresponding place in the output number. For example: 0xfe79 AND 0x85f4 1111 1110 0111 1001 AND 1000 0101 1111 0100 ─────────────────────── 1000 0100 0111 0000 So, 0xfe79 AND 0x85f4 is 0x8470. 0x1234 OR 0x4567: 0001 0010 0011 0100 OR 0100 0101 0110 0111 ─────────────────────── 0101 0111 0111 0111 So, 0x1234 OR 0x4567 is 0x5777 0x1234 XOR 0x4567: 0001 0010 0011 0100 XOR 0100 0101 0110 0111 ─────────────────────── 0101 0111 0101 0011 So, 0x1234 XOR 0x4567 is 0x5753 Obviously, any number XOR itself is zero. XOR can be used to toggle bits. OR can be used to turn bits on. AND can be used to select a bit or range of bits, using a bitmask. Turning a bit on can be referred to as "setting" a bit. Turning a bit off can be referred to as "clearing" a bit. ---- Appendix: Data types Computers use binary data in groups of 8 bits, called bytes. 1 byte is 8 bits. 1 word is 2 bytes. 1 dword is 4 bytes. 1 qword is 8 bytes. 1 tword is 10 bytes. 1 paragraph is 16 bytes. It is possible for computers to use data not organized exactly along byte boundaries. But in general, data is stored as one or more bytes. Numeric data is almost always stored as a byte, a word, a dword, or a qword. Text data is almost always stored as a sequence of bytes or words. An 8 bit integer can be called a byte, or, a "char". It can hold an unsigned value from 0 to 255. It can hold a signed value from -128 to 127. A 16 bit integer can be called a word, or, a "short int". It can hold an unsigned value from 0 to 65535. It can hold a signed value from -32768 to 32767. A 32 bit integer can be called a dword, or, a "long int". It can hold an unsigned value from 0 to 2^32-1. It can hold a signed value from -2^31 to 2^31-1. Intel compatible microprocessors store integers in memory in "little-endian" order. That is, the bytes are stored in reverse order from the representation of the number itself. So, the word integer 0x0123 is stored as two bytes: 0x23, 0x01. The dword integer 0x01234567 is stored as four bytes: 0x67, 0x45, 0x23, 0x01. In "little-endian" order, the least significant byte is stored first, and the most significant byte is stored last. Note that this affects the bytes, not the bits within the bytes. Signed values are stored using "two's compliment". The two's compliment of a negative integer is the absolute value subtracted from the appropriate power of 2 (2^8 for a byte, 2^16 for a word, 2^32 for a dword). For example, -5 decimal would be treated as follows: a signed byte: 0xfb a signed word: 0xfffb a signed dword: 0xfffffffb A signed integer is negative if the leftmost bit is 1. This form of storing negative numbers is very ideal for arithmetic. Addition and subtraction work the same whether the number is signed or not, if overflow is disregarded. For example: 0xe5 - 0x58 is 0x8d, whether the values are signed or not. Addition and subtraction work that way. Multiplication and division do not. Non integers can be stored as floating point numbers. These work kind of like scientific notation, except for binary. Honestly, I am not as familiar with them as I should be, so I won't go into detail here. Floating point numbers are stored as dwords, qwords, or twords. See http://en.wikipedia.org/wiki/IEEE_754-1985 for details. Text is stored as a sequence of bytes or words. ASCII text is stored as a sequence of bytes (unsigned 8 bit integers). Unicode text can be stored several ways, but is generally processed as a sequence of words (unsigned 16 bit integers). In some cases, the length of a text string is known, perhaps stored as an integer. In other cases, the string is terminated by a null character to mark its end. ---- Appendix: Text character sets and character encoding. A character set is a set, or group, of text characters that a computer can display. A character encoding is a way of storing that text as a sequence of bytes. PCs support at the hardware level an 8 bit character set and encoding called CP437 (known as "DOS: United States"). These 256 characters are implemented by the graphics adapter hardware. Microsoft Windows added several 8 bit code pages, in addition to CP437. Foremost is Windows-1252 (known as "Windows: Western"). Modern Windows uses Unicode. Unicode is a standardized international character set capable of displaying most common languages. Basic Unicode is a 16 bit character set, and can use several different encodings. UTF-8 is a Unicode encoding that uses 8 bits per character for the common English letters, numerals, and punctuation. Using special characters results in using more than one byte for those characters. This document you are reading now is encoded with UTF-8. UTF-16LE is a Unicode encoding that uses 16 bits per character for the basic character set. The 16 bits words are stored as byte pairs in little-endian order. Although it is possible for UTF-16 to use more than 1 word per character, this would be rare, as most Latin, Russian, Greek, Hebrew, and Arabic letters, and most common symbols are in the basic character set, and would only need one byte each (not counting combining accent marks or vowel points). The first 128 characters in Unicode and all the code pages are the same. Note that not all fonts can display all the characters. Fonts can only display characters that they were designed for. For example, Arial can display a large number of foreign language letters, but Lucida Console is much more limited. ---- Appendix: The CP437 character set and encoding. CP437 is the character set and encoding used in MS-DOS, and by the VGA hardware. It consists of 256 characters, numbered 0 to 255. Although ASCII and CP437 are not technically the same, I will use the terms interchangeably. From the perspective of a person who grew up in the United States with MS-DOS and PC compatibles, they are basically the same. You can find CP437 in Character Map as "DOS: United States". Characters 0x00 through 0x1f, and character 0x7f are also control characters. When I give Unicode equivalents for characters in that range, I am giving the Unicode equivalent for the symbol. The Unicode equivalents for the control characters themselves are the same as the CP437 number. For example, CP437 character 0x0c is both the female sign, and the form feed control character. The Unicode equivalent for the symbol is 0x2640, but the Unicode form feed character is 0x000c. CP437│sym│Unicode│ description hex │bol│hex │ ─────┼───┼───────┼──────────── 00 │ │ 0020 │ (null) 01 │ ☺ │ 263a │ White Smiling Face (SOH) 02 │ ☻ │ 263b │ Black Smiling Face (start of text) 03 │ ♥ │ 2665 │ Black Heart Suit (end of text) 04 │ ♦ │ 2666 │ Black Diamond Suit (end of transmission) 05 │ ♣ │ 2663 │ Black Club Suit (enquiry) 06 │ ♠ │ 2660 │ Black Spade Suit (acknowledge) 07 │ • │ 2022 │ Bullet (bell) 08 │ ◘ │ 25d8 │ Inverse Bullet (backspace) 09 │ ○ │ 25cb │ White Bullet (horizontal tab) 0a │ ◙ │ 25d9 │ Inverse White Circle (line feed) 0b │ ♂ │ 2642 │ Male Sign (vertical tab) 0c │ ♀ │ 2640 │ Female Sign (form feed) 0d │ ♪ │ 266a │ Eighth Note (carriage return) 0e │ ♫ │ 266b │ Beamed Eighth Notes (shift out) 0f │ ☼ │ 263c │ White Sun With Rays (shift in) 10 │ ► │ 25ba │ Black Right-Pointing Pointer (DLE) 11 │ ◄ │ 25c4 │ Black Left-Pointing Pointer (DC1) 12 │ ↕ │ 2195 │ Up Down Arrow (DC2) 13 │ ‼ │ 203c │ Double Exclamation Mark (DC3) 14 │ ¶ │ 00b6 │ Pilcrow Sign (DC4) 15 │ § │ 00a7 │ Section Sign (negative acknowledge) 16 │ ▬ │ 25ac │ Black Rectangle (synchronize) 17 │ ↨ │ 21a8 │ Up Down Arrow With Base (end transmission block) 18 │ ↑ │ 2191 │ Upwards Arrow (cancel) 19 │ ↓ │ 2193 │ Downwards Arrow (EM) 1a │ → │ 2192 │ Rightwards Arrow (end of file, substitute) 1b │ ← │ 2190 │ Leftwards Arrow (escape) 1c │ ∟ │ 221f │ Right Angle (fs) 1d │ ↔ │ 2194 │ Left Right Arrow (gs) 1e │ ▲ │ 25b2 │ Black Up-Pointing Triangle (rs) 1f │ ▼ │ 25bc │ Black Down-Pointing Triangle (us) 20 │ │ 0020 │ Space 21 │ ! │ 0021 │ Exclamation Mark 22 │ " │ 0022 │ Quotation Mark 23 │ # │ 0023 │ Number Sign 24 │ $ │ 0024 │ Dollar Sign 25 │ % │ 0025 │ Percent Sign 26 │ & │ 0026 │ Ampersand 27 │ ' │ 0027 │ Apostrophe (single quote) 28 │ ( │ 0028 │ Left Parenthesis 29 │ ) │ 0029 │ Right Parenthesis 2a │ * │ 002a │ Asterisk 2b │ + │ 002b │ Plus Sign 2c │ , │ 002c │ Comma 2d │ - │ 002d │ Hypen-Minus 2e │ . │ 002e │ Full Stop (period) 2f │ / │ 002f │ Solidus (forward slash) 30 │ 0 │ 0030 │ Digit Zero 31 │ 1 │ 0031 │ Digit One 32 │ 2 │ 0032 │ Digit Two 33 │ 3 │ 0033 │ Digit Three 34 │ 4 │ 0034 │ Digit Four 35 │ 5 │ 0035 │ Digit Five 36 │ 6 │ 0036 │ Digit Six 37 │ 7 │ 0037 │ Digit Seven 38 │ 8 │ 0038 │ Digit Eight 39 │ 9 │ 0039 │ Digit Nine 3a │ : │ 003a │ Colon 3b │ ; │ 003b │ Semicolon 3c │ < │ 003c │ Less-Than Sign (left chevron) 3d │ = │ 003d │ Equals Sign 3e │ > │ 003e │ Greater-Than Sign (right chevron) 3f │ ? │ 003f │ Question Mark 40 │ @ │ 0040 │ Commercial At 41 │ A │ 0041 │ Latin Capital Letter A 42 │ B │ 0042 │ Latin Capital Letter B 43 │ C │ 0043 │ Latin Capital Letter C 44 │ D │ 0044 │ Latin Capital Letter D 45 │ E │ 0045 │ Latin Capital Letter E 46 │ F │ 0046 │ Latin Capital Letter F 47 │ G │ 0047 │ Latin Capital Letter G 48 │ H │ 0048 │ Latin Capital Letter H 49 │ I │ 0049 │ Latin Capital Letter I 4a │ J │ 004a │ Latin Capital Letter J 4b │ K │ 004b │ Latin Capital Letter K 4c │ L │ 004c │ Latin Capital Letter L 4d │ M │ 004d │ Latin Capital Letter M 4e │ N │ 004e │ Latin Capital Letter N 4f │ O │ 004f │ Latin Capital Letter O 50 │ P │ 0050 │ Latin Capital Letter P 51 │ Q │ 0051 │ Latin Capital Letter Q 52 │ R │ 0052 │ Latin Capital Letter R 53 │ S │ 0053 │ Latin Capital Letter S 54 │ T │ 0054 │ Latin Capital Letter T 55 │ U │ 0055 │ Latin Capital Letter U 56 │ V │ 0056 │ Latin Capital Letter V 57 │ W │ 0057 │ Latin Capital Letter W 58 │ X │ 0058 │ Latin Capital Letter X 59 │ Y │ 0059 │ Latin Capital Letter Y 5a │ Z │ 005a │ Latin Capital Letter Z 5b │ [ │ 005b │ Left Square Bracket 5c │ \ │ 005c │ Reverse Solidus (backslash) 5d │ ] │ 005d │ Right Square Bracket 5e │ ^ │ 005e │ Circumflex Accent 5f │ _ │ 005f │ Low Line 60 │ ` │ 0060 │ Grave Accent 61 │ a │ 0061 │ Latin Small Letter A 62 │ b │ 0062 │ Latin Small Letter B 63 │ c │ 0063 │ Latin Small Letter C 64 │ d │ 0064 │ Latin Small Letter D 65 │ e │ 0065 │ Latin Small Letter E 66 │ f │ 0066 │ Latin Small Letter F 67 │ g │ 0067 │ Latin Small Letter G 68 │ h │ 0068 │ Latin Small Letter H 69 │ i │ 0069 │ Latin Small Letter I 6a │ j │ 006a │ Latin Small Letter J 6b │ k │ 006b │ Latin Small Letter K 6c │ l │ 006c │ Latin Small Letter L 6d │ m │ 006d │ Latin Small Letter M 6e │ n │ 006e │ Latin Small Letter N 6f │ o │ 006f │ Latin Small Letter O 70 │ p │ 0070 │ Latin Small Letter P 71 │ q │ 0071 │ Latin Small Letter Q 72 │ r │ 0072 │ Latin Small Letter R 73 │ s │ 0073 │ Latin Small Letter S 74 │ t │ 0074 │ Latin Small Letter T 75 │ u │ 0075 │ Latin Small Letter U 76 │ v │ 0076 │ Latin Small Letter V 77 │ w │ 0077 │ Latin Small Letter W 78 │ x │ 0078 │ Latin Small Letter X 79 │ y │ 0079 │ Latin Small Letter Y 7a │ z │ 007a │ Latin Small Letter Z 7b │ { │ 007b │ Left Curly Bracket (left brace) 7c │ | │ 007c │ Vertical Line (pipe) 7d │ } │ 007d │ Right Curly Bracket (right brace) 7e │ ~ │ 007e │ Tilde 7f │ ⌂ │ 2302 │ House (delete) 80 │ Ç │ 00c7 │ Latin Capital Letter C with Cedilla 81 │ ü │ 00fc │ Latin Small Letter U With Diaeresis 82 │ é │ 00e9 │ Latin Small Letter E With Acute 83 │ â │ 00e2 │ Latin Small Letter A With Circumflex 84 │ ä │ 00e4 │ Latin Small Letter A With Diaeresis 85 │ à │ 00e0 │ Latin Small Letter A With Grave 86 │ å │ 00e5 │ Latin Small Letter A With Ring Above 87 │ ç │ 00e7 │ Latin Small Letter C With Cedilla 88 │ ê │ 00ea │ Latin Small Letter E With Circumflex 89 │ ë │ 00eb │ Latin Small Letter E With Diaeresis 8a │ è │ 00e8 │ Latin Small Letter E With Grave 8b │ ï │ 00ef │ Latin Small Letter I With Diaeresis 8c │ î │ 00ee │ Latin Small Letter I With Circumflex 8d │ ì │ 00ec │ Latin Small Letter I With Grave 8e │ Ä │ 00c4 │ Latin Capital Letter A With Diaeresis 8f │ Å │ 00c5 │ Latin Capital Letter A With Ring Above 90 │ É │ 00c9 │ Latin Capital Letter E With Acute 91 │ æ │ 00e6 │ Latin Small Letter Ae 92 │ Æ │ 00c6 │ Latin Capital Letter Ae 93 │ ô │ 00f4 │ Latin Small Letter O With Circumflex 94 │ ö │ 00f6 │ Latin Small Letter O With Diaeresis 95 │ ò │ 00f2 │ Latin Small Letter O With Grave 96 │ û │ 00fb │ Latin Small Letter U With Circumflex 97 │ ù │ 00f9 │ Latin Small Letter U With Grave 98 │ ÿ │ 00ff │ Latin Small Letter Y With Diaeresis 99 │ Ö │ 00d6 │ Latin Capital Letter O With Diaeresis 9a │ Ü │ 00dc │ Latin Capital Letter U With Diaeresis 9b │ ¢ │ 00a2 │ Cent Sign 9c │ £ │ 00a3 │ Pound Sign 9d │ ¥ │ 00a5 │ Yen Sign 9e │ ₧ │ 20a7 │ Peseta Sign 9f │ ƒ │ 0192 │ Latin Small Letter F With Hook a0 │ á │ 00e1 │ Latin Small Letter A With Acute a1 │ í │ 00ed │ Latin Small Letter I With Acute a2 │ ó │ 00f3 │ Latin Small Letter O With Acute a3 │ ú │ 00fa │ Latin Small Letter U With Acute a4 │ ñ │ 00f1 │ Latin Small Letter N With Tilde a5 │ Ñ │ 00d1 │ Latin Capital Letter N With Tilde a6 │ ª │ 00aa │ Feminine Ordinal Indicator a7 │ º │ 00ba │ Masculine Ordinal Indicator a8 │ ¿ │ 00bf │ Inverted Question Mark a9 │ ⌐ │ 2310 │ Reversed Not Sign aa │ ¬ │ 00ac │ Not Sign ab │ ½ │ 00bd │ Vulgar Fraction One Half ac │ ¼ │ 00bc │ Vulgar Fraction One Quarter ad │ ¡ │ 00a1 │ Inverted Exclamation Mark ae │ « │ 00ab │ Left-Pointing Double Angle Quotation Mark af │ » │ 00bb │ Right-Pointing Double Angle Quotation Mark b0 │ ░ │ 2591 │ Light Shade b1 │ ▒ │ 2592 │ Medium Shade b2 │ ▓ │ 2593 │ Dark Shade b3 │ │ │ 2502 │ Box Drawings Light Vertical b4 │ ┤ │ 2524 │ Box Drawings Light Vertical And Left b5 │ ╡ │ 2561 │ Box Drawings Vertical Single And Left Double b6 │ ╢ │ 2562 │ Box Drawings Vertical Double And Left Single b7 │ ╖ │ 2556 │ Box Drawings Down Double And Left Single b8 │ ╕ │ 2555 │ Box Drawings Down Single And Left Double b9 │ ╣ │ 2563 │ Box Drawings Double Vertical And Left ba │ ║ │ 2551 │ Box Drawings Double Vertical bb │ ╗ │ 2557 │ Box Drawings Double Down And Left bc │ ╝ │ 255d │ Box Drawings Double Up And Left bd │ ╜ │ 255c │ Box Drawings Up Double And Left Single be │ ╛ │ 255b │ Box Drawings Up Single And Left Double bf │ ┐ │ 2510 │ Box Drawings Light Down And Left c0 │ └ │ 2514 │ Box Drawings Light Up And Right c1 │ ┴ │ 2534 │ Box Drawings Light Up And Horizontal c2 │ ┬ │ 252c │ Box Drawings Light Down And Horizontal c3 │ ├ │ 251c │ Box Drawings Light Vertical And Right c4 │ ─ │ 2500 │ Box Drawings Light Horizontal c5 │ ┼ │ 253c │ Box Drawings Light Vertical And Horizontal c6 │ ╞ │ 255e │ Box Drawings Vertical Single And Right Double c7 │ ╟ │ 255f │ Box Drawings Vertical Double And Right Single c8 │ ╚ │ 255a │ Box Drawings Double Up And Right c9 │ ╔ │ 2554 │ Box Drawings Double Down And Right ca │ ╩ │ 2569 │ Box Drawings Double Up And Horizontal cb │ ╦ │ 2556 │ Box Drawings Double Down And Horizontal cc │ ╠ │ 2560 │ Box Drawings Double Vertical And Right cd │ ═ │ 2550 │ Box Drawings Double Horizontal ce │ ╬ │ 256c │ Box Drawings Double Vertical And Horizontal cf │ ╧ │ 2567 │ Box Drawings Up Single And Horizontal Double d0 │ ╨ │ 2568 │ Box Drawings Up Double And Horizontal Single d1 │ ╤ │ 2564 │ Box Drawings Down Single And Horizontal Double d2 │ ╥ │ 2565 │ Box Drawings Down Double And Horizontal Single d3 │ ╙ │ 2559 │ Box Drawings Double Up And Right Single d4 │ ╘ │ 2558 │ Box Drawings Up Single And Right Double d5 │ ╒ │ 2552 │ Box Drawings Down Single And Right Double d6 │ ╓ │ 2553 │ Box Drawings Down Double And Right Single d7 │ ╫ │ 256b │ Box Drawings Vertical Down And Horizontal Single d8 │ ╪ │ 256a │ Box Drawings Vertical Single And Horizontal Double d9 │ ┘ │ 2518 │ Box Drawings Light Up And Left da │ ┌ │ 250c │ Box Drawings Light Down And Right db │ █ │ 2588 │ Full Block dc │ ▄ │ 2584 │ Lower Half Block dd │ ▌ │ 258c │ Left Half Block de │ ▐ │ 2590 │ Right Half Block df │ ▀ │ 2580 │ Upper Half Block e0 │ α │ 03b1 │ Greek Small Letter Alpha e1 │ ß │ 00df │ Latin Small Letter Sharp S (greek small beta β 03b2) e2 │ Γ │ 0393 │ Greek Capital Letter Gamma e3 │ π │ 03c0 │ Greek Small Letter Pi (greek capital pi Π 03a0, n-ary product sign ∏ 220f) e4 │ Σ │ 03a3 │ Greek Capital Letter Sigma (n-ary summation sign ∑ 2211) e5 │ σ │ 03c3 │ Greek Small Letter Sigma e6 │ µ │ 00b5 │ Micro Sign (greek small mu μ 03bc) e7 │ τ │ 03c4 │ Greek Small Letter Tau e8 │ Φ │ 03a6 │ Greek Capital Letter Phi e9 │ Θ │ 0398 │ Greek Capital Letter Theta ea │ Ω │ 03a9 │ Greek Capital Letter Omega (ohm sign Ω 2126) eb │ δ │ 03b4 │ Greek Small Letter Delta (icelandic small eth ð 00F0, partial derivative sign ∂ 2202) ec │ ∞ │ 221e │ Infinity ed │ φ │ 03c6 │ Greek Small Letter Phi (empty set, latin o with stroke Ø 00d8 ø 00f8) ee │ ε │ 03b5 │ Greek Small Letter Epsilon (element-of sign 2208, euro sign € 20ac) ef │ ∩ │ 2229 │ Intersection f0 │ ≡ │ 2261 │ Identical To f1 │ ± │ 00b1 │ Plus-Minus Sign f2 │ ≥ │ 2265 │ Greater-Than Or Equal To f3 │ ≤ │ 2264 │ Less-Than Or Equal To f4 │ ⌠ │ 2320 │ Top Half Integral f5 │ ⌡ │ 2321 │ Bottom Half Integral f6 │ ÷ │ 00f7 │ Division Sign f7 │ ≈ │ 2248 │ Almost Equal To f8 │ ° │ 00b0 │ Degree Sign f9 │ ∙ │ 2219 │ Bullet Operator fa │ · │ 00b7 │ Middle Dot fb │ √ │ 221a │ Square Root fc │ ⁿ │ 207f │ Superscript Latin Small Letter N fd │ ² │ 00b2 │ Superscript Two fe │ ■ │ 25a0 │ Black Square ff │ │ 00a0 │ No-Break Space