UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming1 Number Systems and Bitwise Operation
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming2 Binary, Octal, Hexadecimal, and Decimal Binary Binary numbering system has only two possible values for each digit: 0 and 1. For example, binary number decimal number
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming3 Decimal Numbers Decimal The digits' weight increases by powers of 10. The weighted values for each position is determined as follows: For example, A decimal number 4261 can be thought of as follows. 4 * * * * 1 = = 4261 (decimal)
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming4 Binary, Octal, Hexadecimal, and Decimal Binary The digits' weight increases by powers of 2. The weighted values for each position is determined as follows: For example, binary 10 is decimal 2. the binary value represents the decimal value * * * * * * * * 1 = = 202 (decimal)
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming5 Binary Two’s Complement The left-most bit is the sign bit. If it is 1, then the number is negative. Otherwise, it is positive. Give a negative value, represent it in binary two’s complement form as follows. 1. write the number in its absolute value. 2. complement the binary number. 3. plus 1. Example, represent –2 in binary two’s complement with 16 bits for short int. Binary value of 2: 0b Binary complement of 2: 0b Plus 1: +1 Binary two’s complement representation of -2: 0b
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming6 Give binary two’s complement form of a negative number, find the absolute value of the negative value as follows. 1. Complement the binary number. 2. Plus 1. Example, find the decimal value of (0b ) 2 in binary two’s complement form with 16 bits. Binary two’s complement (0b ) 2 Binary complement (0b ) 2 Plus 1 +1 Absolute value: (0b ) 2 = 2 10 Negative value: -2
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming7 Subtraction of a value in the computer can be treated as addition of its two’s complement. For example, the subtraction of (2-2) can be performed as 2+(-2) as follows: 0b (binary representation of 2) 0b (two’s complement representation of -2) 0b (2+(-2))
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming8 Example > short i, j > i = 0b > j = 0b > i+j 0
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming9 Octal The octal system is based on the binary system with a 3-bit boundary. The octal number system uses base 8 includes 0 through 7. The weighted values for each position is as follows: Binary to Octal Conversion Break the binary number into 3-bit sections from the least significant bit (LSB) to the most significant bit (MSB). Convert the 3-bit binary number to its octal equivalent. For example, the binary value equals to octal value ( ) 8.
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming10 2. Octal to Binary Conversion Convert the octal number to its 3-bit binary equivalent. Combine all the 3-bit sections. For example, the octal value equals to binary value Octal to Decimal Conversion To convert octal number to decimal number, multiply the value in each position by its octal weight and add each value together. For example, the octal value (167) 8 represents decimal value *64 + 6*8 + 7*1 = 119
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming11 Hexadecimal Similar to octal, the hexadecimal system is also based on the binary system but using 4-bit boundary. The hexadecimal number system uses base 16 including the digits 0 through 9 and the letters A, B, C, D, E, and F. The letters A through F represent the decimal numbers 10 through 15. For the decimal values from 0 to 15, the corresponding hexadecimal values are listed below FEDCBA Decimal Hexadecimal
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming12 The weighted values for each position is as follows: The conversion between binary value and hexadecimal value is similar to octal number,but using four-bit sections. The hexadecimal value 20A represents decimal value * * *1 = 522
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming13 Following table provides all the information you need to convert from one type number into any other type number for the decimal values from 0 to16. BinaryOctalDecimalHexBinaryOctalDecimalHex A B C D E F
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming14 Bitwise Operators There are six bitwise operators: OperatorNameDescription & bitwise AND The bit is set to 1 if the corresponding bits in the two operands are both 1. | bitwise OR The bit is set to 1 if at least one of the corresponding bits in the two operands is 1. ^ bitwise exclusive OR The bit is set to 1 if exactly one of the corresponding bits in the two operands is 1. << left shiftShift the bits of the first operand left by the number of bits specified by the second operand; fill from right with 0 bits. >> right shiftShift the bits of the first operand right by the number of bits specified by the second operand; filling from the left is implementation dependent. ~ One’s complement Set all 0 bits to 1, and all 1 bits to 0.
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming15 Example: a b a & b a | b a ^ b b << a >> ~a
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming16 /* File: bitop.ch (run in Ch only) Use Ch features “%b” and 0b */ #include int main() { char a = 0b ; char b = 0b ; char c; printf("a = 0b%8b\n", a); printf("b = 0b%8b\n", b); c = a & b; printf("a & b = 0b%8b\n", c); c = a | b; printf("a | b = 0b%8b\n", c); c = a ^ b; printf("a ^ b = 0b%8b\n", c); c = b << 1; printf("b << 1 = 0b%8b\n", c); c = a >> 1; printf("a >> 1 = 0b%8b\n", c); c = ~a; printf("~a = 0b%8b\n", c); return 0; } Output: a = 0b b = 0b a & b = 0b a | b = 0b a ^ b = 0b b << 1 = 0b a >> 1 = 0b ~a = 0b
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming17 Logic Operators There are four logic operators: 1) ! --- logic NOT 2) && --- logic AND 3) || --- inclusive OR 4) ^^ --- exclusive OR (available in Ch only) a b !a a && b a || b a ^^ b
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming18 End Number Systems and Bitwise Operation Q & A!