Hello Coders.
Today I would like to discuss about binary digits.
If you don't know what a binary digit is, here is a simple explanation:
A Binary Digit is a digit of number whose value is either 0 or 1.
In computer, the 0s and 1s indicate electrical signals.
1 indicates ON, 0 indicates OFF.
As we have learned in the previous post about data types, a character has a size of 1 byte.
1 byte equals to 8 bits.
Basically a set of binary digits make up 1 byte, or 8 bits.
Examples: 1111 1111, 0000 1010, 1010 1110, etc.
What can we do with those 1s and 0s?
You can convert them to decimals, octals, and hexadecimals.
Also, you can use the AND, OR, and XOR operators to perform special conversions.
The leftmost digit in an 8-bit set of binary digits has the value of 27 while the rightmost has the value of 20. The digits in between has the value from 26 to 21 in a left-to-right order.
Let's go right to the examples:
So let's say you have sets of 3-bit binary digits:
Or sets of 4-bit binary digits:
To convert an 8-bit binary to its octal value, you need to separate it into 3-bits at a time, starting from the right. Like this:
Calculate each part, convert them to its decimal value.
011 = 2+1 = 3
111 = 4+2+1 = 7
111 = 4+2 +1 = 7
So, 11111111(2) = 377(8)
Another example:
1010 1010 = 010 | 101 | 010 = 252(8)
1001 1100(2) = ..... (16)
= 1001 | 1100
= 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 | 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0
= 9 | 12
= 9C(16)
Let's assume we have two sets of binary digits: 11110101 and 00110101. Using the AND operator, we will receive the result:
11110101
00110101 AND
00110101
Another example with 00001110 and 11101100.
00001110
11101100 AND
00001100
Let A be 00110011 and B be 01011100.
Today I would like to discuss about binary digits.
If you don't know what a binary digit is, here is a simple explanation:
A Binary Digit is a digit of number whose value is either 0 or 1.
In computer, the 0s and 1s indicate electrical signals.
1 indicates ON, 0 indicates OFF.
As we have learned in the previous post about data types, a character has a size of 1 byte.
1 byte equals to 8 bits.
Basically a set of binary digits make up 1 byte, or 8 bits.
Examples: 1111 1111, 0000 1010, 1010 1110, etc.
What can we do with those 1s and 0s?
You can convert them to decimals, octals, and hexadecimals.
Also, you can use the AND, OR, and XOR operators to perform special conversions.
Converting Binary to Decimal
Each digit of binary represents a decimal value which is 2n, where 0 <= n < 8 .The leftmost digit in an 8-bit set of binary digits has the value of 27 while the rightmost has the value of 20. The digits in between has the value from 26 to 21 in a left-to-right order.
Let's go right to the examples:
- 11111111 = 1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 255
- 00000001 = 0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 1
- 01010101 = 0*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 85
- 00110010 = 0*2^7 + 0*2^6 + 1*2^5 +1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 50
So let's say you have sets of 3-bit binary digits:
- 111 = 1*2^2 + 1*2^1 + 1*2^0 = 7
- 010 = 0*2^2 + 1*2^1 + 0*2^0 = 2
- 000 = 0*2^2 + 0*2^1 + 0*2^0 = 0
- 100 = 1*2^2 + 0*2^1 + 0*2^0 = 4
Or sets of 4-bit binary digits:
- 0111 = 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 7
- 1010 = 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 10
- 0100 = 0*2^3 + 1*2^2 + 0*2^1 + 0*2^0 = 4
- 1001 = 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 9
Converting Binary to Octal
In converting binary(base-2) to octal(base-8), you need to understand that octals are numbers ranging from 0-7 only. This means that 777 exists while 008 doesn't.To convert an 8-bit binary to its octal value, you need to separate it into 3-bits at a time, starting from the right. Like this:
1111 1111 = 11 | 111 | 111Three bits at a time? Why is there a 2-bit part then? Simple add 0 in front to make it 3-bits. Notice that 011 == 11 in binary. So, here is the digits after separation:
Then what?011 | 111 | 111
Calculate each part, convert them to its decimal value.
011 = 2+1 = 3
111 = 4+2+1 = 7
111 = 4+2 +1 = 7
So, 11111111(2) = 377(8)
Another example:
1010 1010 = 010 | 101 | 010 = 252(8)
Converting Binary to Hexadecimal
Hexadecimal numbers range from 0 to F: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
In order to convert to Hexadecimals(base-16), you will need to separate the bits four at a time.
Example:
1111 1111(2) = ..... (16)
= 1111 | 1111
= 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 | 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0
= 15 | 15
= FF(16)
1001 1100(2) = ..... (16)
= 1001 | 1100
= 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 | 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0
= 9 | 12
= 9C(16)
Using the AND(&&) Operator
Here is what the AND operator does when two values are passed to it.
p | q | p AND q |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
Let's assume we have two sets of binary digits: 11110101 and 00110101. Using the AND operator, we will receive the result:
11110101
00110101 AND
00110101
Another example with 00001110 and 11101100.
00001110
11101100 AND
00001100
Using the OR(||) Operator
The table of OR looks like this:
p | q | p AND q |
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
So, if your perform an OR on 11110000 and 00001111, you will get:
11110000
00001111 OR
11111111
It is similar to the AND operator, only with different rules.
Using the XOR(^) Operator
The XOR Operator is also called the Exclusive OR. Its table has values like this:
p | q | p AND q |
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
It can be used to swap digits. Let me show you.
Let A be 00110011 and B be 01011100.
We would like to swap the value of A and B.
We can use the XOR Operator to accomplish the task, like this:
A = A ^ B
B = A ^ B
A = A ^ B
The formula can also be simplified as A^=B^=A^=B
The process looks like this:
A = 00110011
B = 01011100 XOR
A = 01101111
A = 01101111
B = 01011100 XOR
B = 00110011 ------------------- B is now A
A = 01101111
B = 00110011 XOR
A = 01011100 ------------------- A is now B
These concepts can be applied to your programming. For example you can create a swap function using the XOR operator.
Good luck trying, pals.
Regards,
Cyber Frost
Cyber Frost
No comments:
Post a Comment