## Binary numbers are a base 2 numeral system.

A binary number is a number expressed in the base-2 numeral system, which uses only two symbols: 0 and 1. Each digit is referred to as a bit. Because of its straightforward implementation in digital electronic circuitry using logic gates, the binary system is used by almost all modern computers and computer-based devices.

To explore binary logic, see Noton or Der Papiercomputer.

### Basics

**Bit**: The smallest unit in computers. It is either a 1 or a 0.**Nibble**: Half a byte, or 4 bites.**Byte**: 8 bits together form one byte, a number from 0 to 255. Bits in the byte are numbered starting from the right at 0.**Short**: Two bytes put together is 16 bits, forming a number from 0 to 65535. The low byte is the rightmost eight bits.**Hex Number**: A HEX number consisting of 4 numbers is 16-bit.

### Finger Counting

Pinky | Ring | Middle | Index | Thumb | |
---|---|---|---|---|---|

Value | 1 | 2 | 4 | 8 | 16 |

Finger binary is a system for counting and displaying binary numbers on the fingers of one or more hands. It is possible to count from 0 to 31 using the fingers of a single hand. In the binary number system, each numerical digit has two possible states(0 or 1) and each successive digit represents an increasing power of two.

For example, the number 10 is expressed by folding the index and ring finger, the number 20 is expressed by folding the thumb and the middle finger.

### Binary to Hexadecimal Conversion

Break down the binary value in chunks of 4, multiply each 1 by its equivalent value, either 8, 4, 2 or 1. Add the resulting numbers together to get the result. For example, the value 1100, or (8*1 + 4*1), is equal to C(decimal 12).

`1101 0101(D5)` | ||||||||
---|---|---|---|---|---|---|---|---|

1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | Binary |

128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | Values |

128 | 64 | 16 | 4 | 1 | Result: 213 |

### Rotate

Binary numbers are easy to multiply and divide by multiples of 2. Rotate one bit left to multiply by 2, and rotates one bit right to divide by 2.

22 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|

44 | `ROL` | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |

11 | `ROR` | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |

### Hexadecimal to Binary Table

0 | 0000 | 4 | 0100 | 8 | 1000 | C | 1100 |

1 | 0001 | 5 | 0101 | 9 | 1001 | D | 1101 |

2 | 0010 | 6 | 0110 | A | 1010 | E | 1110 |

3 | 0011 | 7 | 0111 | B | 1011 | F | 1111 |

### Arithmetic

#### Peasant Multiplication

In the first column, divide the first number by 2 by removing the last bit, until 1 is reached. In the second column, multiply by 2 by adding an extra bit of 0. The answer is found by adding the numbers in the second column with odd numbers in the first column. A binary number ending with 1 is odd.

This example multiplies 35 by 19, to arrive at a result of 665. The result `1010011001`

can be deconstucted as:

10 1001 1001 = 1 + 8 + 16 + 128 + 512 = 665

35 | 19 |
---|---|

`100011` | ` 10011` |

` 10001` | ` 100110` |

` 1000` | ` 1001100` |

` 100` | ` 10011000` |

` 10` | ` 100110000` |

` 1` | `1001100000` |

`1010011001` |

**Addition**

input | ADD | output | carry |

0 | 1 | 1 | 0 |

0 | 0 | 0 | 0 |

1 | 1 | 0 | 1 |

1 | 0 | 1 | 0 |

**Subtraction**

input | SUB | output | borrow |

0 | 1 | 1 | 1 |

0 | 0 | 0 | 0 |

1 | 1 | 0 | 0 |

1 | 0 | 1 | 0 |

**Multiplication**

input | MUL | output |

0 | 1 | 0 |

0 | 0 | 0 |

1 | 1 | 1 |

1 | 0 | 0 |

### Logic

**AND**, or "both", sets individual bits to 0. AND is useful for masking bits, for example, to mask the high order bits of a value AND with $0F: $36 AND $0F = $06.

input | AND | output |

0 | 1 | 0 |

0 | 0 | 0 |

1 | 1 | 1 |

1 | 0 | 0 |

**ORA**(OR), or "either one or both", sets individual bits to 1. OR is useful for setting a particular bit, for example, $80 OR $08 = $88

input | ORA | output |

0 | 1 | 1 |

0 | 0 | 0 |

1 | 1 | 1 |

1 | 0 | 1 |

**EOR**(XOR), or "one or the other but not both", inverts individual bits.

input | EOR | output |

0 | 1 | 1 |

0 | 0 | 0 |

1 | 1 | 0 |

1 | 0 | 1 |

### Signed Integers

If Bit 7 is not set (as in the first example) the representation of signed and unsigned numbers is the same. However, when Bit 7 is set, the number is always negative. For this reason Bit 7 is sometimes called the sign bit.

Binary | Unsigned | Signed |

0010 0011 | 35 | 35 |

1010 0011 | 163 | -93 |

1111 1111 | 255 | -1 |

1000 0000 | 128 | -128 |

### Setting a bit

To activate the 1st, 2nd and 4th bits:

0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |

unsigned char num = 0; num |= (1 << 0); num |= (1 << 1); num |= (1 << 3);

To deactivate the 1st, 4th and 6th bits:

1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |

unsigned char num = 255; num &= ~(1 << 0); num &= ~(1 << 3); num &= ~(1 << 5);

To read value of bit:

(num >> bit) & 1;

## Binary Table

Dec | Hex | Bin | Dec | Hex | Bin | Dec | Hex | Bin | Dec | Hex | Bin |

0 | 0 | 00000000 | 64 | 40 | 01000000 | 128 | 80 | 10000000 | 192 | c0 | 11000000 |

1 | 1 | 00000001 | 65 | 41 | 01000001 | 129 | 81 | 10000001 | 193 | c1 | 11000001 |

2 | 2 | 00000010 | 66 | 42 | 01000010 | 130 | 82 | 10000010 | 194 | c2 | 11000010 |

3 | 3 | 00000011 | 67 | 43 | 01000011 | 131 | 83 | 10000011 | 195 | c3 | 11000011 |

4 | 4 | 00000100 | 68 | 44 | 01000100 | 132 | 84 | 10000100 | 196 | c4 | 11000100 |

5 | 5 | 00000101 | 69 | 45 | 01000101 | 133 | 85 | 10000101 | 197 | c5 | 11000101 |

6 | 6 | 00000110 | 70 | 46 | 01000110 | 134 | 86 | 10000110 | 198 | c6 | 11000110 |

7 | 7 | 00000111 | 71 | 47 | 01000111 | 135 | 87 | 10000111 | 199 | c7 | 11000111 |

8 | 8 | 00001000 | 72 | 48 | 01001000 | 136 | 88 | 10001000 | 200 | c8 | 11001000 |

9 | 9 | 00001001 | 73 | 49 | 01001001 | 137 | 89 | 10001001 | 201 | c9 | 11001001 |

10 | a | 00001010 | 74 | 4a | 01001010 | 138 | 8a | 10001010 | 202 | ca | 11001010 |

11 | b | 00001011 | 75 | 4b | 01001011 | 139 | 8b | 10001011 | 203 | cb | 11001011 |

12 | c | 00001100 | 76 | 4c | 01001100 | 140 | 8c | 10001100 | 204 | cc | 11001100 |

13 | d | 00001101 | 77 | 4d | 01001101 | 141 | 8d | 10001101 | 205 | cd | 11001101 |

14 | e | 00001110 | 78 | 4e | 01001110 | 142 | 8e | 10001110 | 206 | ce | 11001110 |

15 | f | 00001111 | 79 | 4f | 01001111 | 143 | 8f | 10001111 | 207 | cf | 11001111 |

16 | 10 | 00010000 | 80 | 50 | 01010000 | 144 | 90 | 10010000 | 208 | d0 | 11010000 |

17 | 11 | 00010001 | 81 | 51 | 01010001 | 145 | 91 | 10010001 | 209 | d1 | 11010001 |

18 | 12 | 00010010 | 82 | 52 | 01010010 | 146 | 92 | 10010010 | 210 | d2 | 11010010 |

19 | 13 | 00010011 | 83 | 53 | 01010011 | 147 | 93 | 10010011 | 211 | d3 | 11010011 |

20 | 14 | 00010100 | 84 | 54 | 01010100 | 148 | 94 | 10010100 | 212 | d4 | 11010100 |

21 | 15 | 00010101 | 85 | 55 | 01010101 | 149 | 95 | 10010101 | 213 | d5 | 11010101 |

22 | 16 | 00010110 | 86 | 56 | 01010110 | 150 | 96 | 10010110 | 214 | d6 | 11010110 |

23 | 17 | 00010111 | 87 | 57 | 01010111 | 151 | 97 | 10010111 | 215 | d7 | 11010111 |

24 | 18 | 00011000 | 88 | 58 | 01011000 | 152 | 98 | 10011000 | 216 | d8 | 11011000 |

25 | 19 | 00011001 | 89 | 59 | 01011001 | 153 | 99 | 10011001 | 217 | d9 | 11011001 |

26 | 1a | 00011010 | 90 | 5a | 01011010 | 154 | 9a | 10011010 | 218 | da | 11011010 |

27 | 1b | 00011011 | 91 | 5b | 01011011 | 155 | 9b | 10011011 | 219 | db | 11011011 |

28 | 1c | 00011100 | 92 | 5c | 01011100 | 156 | 9c | 10011100 | 220 | dc | 11011100 |

29 | 1d | 00011101 | 93 | 5d | 01011101 | 157 | 9d | 10011101 | 221 | dd | 11011101 |

30 | 1e | 00011110 | 94 | 5e | 01011110 | 158 | 9e | 10011110 | 222 | de | 11011110 |

31 | 1f | 00011111 | 95 | 5f | 01011111 | 159 | 9f | 10011111 | 223 | df | 11011111 |

32 | 20 | 00100000 | 96 | 60 | 01100000 | 160 | a0 | 10100000 | 224 | e0 | 11100000 |

33 | 21 | 00100001 | 97 | 61 | 01100001 | 161 | a1 | 10100001 | 225 | e1 | 11100001 |

34 | 22 | 00100010 | 98 | 62 | 01100010 | 162 | a2 | 10100010 | 226 | e2 | 11100010 |

35 | 23 | 00100011 | 99 | 63 | 01100011 | 163 | a3 | 10100011 | 227 | e3 | 11100011 |

36 | 24 | 00100100 | 100 | 64 | 01100100 | 164 | a4 | 10100100 | 228 | e4 | 11100100 |

37 | 25 | 00100101 | 101 | 65 | 01100101 | 165 | a5 | 10100101 | 229 | e5 | 11100101 |

38 | 26 | 00100110 | 102 | 66 | 01100110 | 166 | a6 | 10100110 | 230 | e6 | 11100110 |

39 | 27 | 00100111 | 103 | 67 | 01100111 | 167 | a7 | 10100111 | 231 | e7 | 11100111 |

40 | 28 | 00101000 | 104 | 68 | 01101000 | 168 | a8 | 10101000 | 232 | e8 | 11101000 |

41 | 29 | 00101001 | 105 | 69 | 01101001 | 169 | a9 | 10101001 | 233 | e9 | 11101001 |

42 | 2a | 00101010 | 106 | 6a | 01101010 | 170 | aa | 10101010 | 234 | ea | 11101010 |

43 | 2b | 00101011 | 107 | 6b | 01101011 | 171 | ab | 10101011 | 235 | eb | 11101011 |

44 | 2c | 00101100 | 108 | 6c | 01101100 | 172 | ac | 10101100 | 236 | ec | 11101100 |

45 | 2d | 00101101 | 109 | 6d | 01101101 | 173 | ad | 10101101 | 237 | ed | 11101101 |

46 | 2e | 00101110 | 110 | 6e | 01101110 | 174 | ae | 10101110 | 238 | ee | 11101110 |

47 | 2f | 00101111 | 111 | 6f | 01101111 | 175 | af | 10101111 | 239 | ef | 11101111 |

48 | 30 | 00110000 | 112 | 70 | 01110000 | 176 | b0 | 10110000 | 240 | f0 | 11110000 |

49 | 31 | 00110001 | 113 | 71 | 01110001 | 177 | b1 | 10110001 | 241 | f1 | 11110001 |

50 | 32 | 00110010 | 114 | 72 | 01110010 | 178 | b2 | 10110010 | 242 | f2 | 11110010 |

51 | 33 | 00110011 | 115 | 73 | 01110011 | 179 | b3 | 10110011 | 243 | f3 | 11110011 |

52 | 34 | 00110100 | 116 | 74 | 01110100 | 180 | b4 | 10110100 | 244 | f4 | 11110100 |

53 | 35 | 00110101 | 117 | 75 | 01110101 | 181 | b5 | 10110101 | 245 | f5 | 11110101 |

54 | 36 | 00110110 | 118 | 76 | 01110110 | 182 | b6 | 10110110 | 246 | f6 | 11110110 |

55 | 37 | 00110111 | 119 | 77 | 01110111 | 183 | b7 | 10110111 | 247 | f7 | 11110111 |

56 | 38 | 00111000 | 120 | 78 | 01111000 | 184 | b8 | 10111000 | 248 | f8 | 11111000 |

57 | 39 | 00111001 | 121 | 79 | 01111001 | 185 | b9 | 10111001 | 249 | f9 | 11111001 |

58 | 3a | 00111010 | 122 | 7a | 01111010 | 186 | ba | 10111010 | 250 | fa | 11111010 |

59 | 3b | 00111011 | 123 | 7b | 01111011 | 187 | bb | 10111011 | 251 | fb | 11111011 |

60 | 3c | 00111100 | 124 | 7c | 01111100 | 188 | bc | 10111100 | 252 | fc | 11111100 |

61 | 3d | 00111101 | 125 | 7d | 01111101 | 189 | bd | 10111101 | 253 | fd | 11111101 |

62 | 3e | 00111110 | 126 | 7e | 01111110 | 190 | be | 10111110 | 254 | fe | 11111110 |

63 | 3f | 00111111 | 127 | 7f | 01111111 | 191 | bf | 10111111 | 255 | ff | 11111111 |

*incoming(3)*: nibble dice noton assembly