roman10
C Bitwise Operations
C provides six bitwise operations. They can apply to integer data type only, including char, short, int and long. The advantage of using bitwise operators is speed. It generally makes your program faster.
The six bitwise operators are,
& AND (eg. 0011&0101 = 0001)
| OR (inclusive, eg. 0011|0101 = 0111)
^ XOR (exclusive, eg. 0011^0101 = 0110)
~ ONE'S COMPLEMENT(unary, eg. ^01 = 10)
<< LEFT SHIFT
>> RIGHT SHIFT
The right operands for shift operators must be non-negative. For example, x >> 2 will shift the variable x right by 2 digits, which is equivalent to multiply the variable by 4. A worth-noting point for shift operators is that if the left operand is unsigned, zeros will be fit into the vacated bits. While for signed, it’s machine-dependent, some use zeros, some use the sign bit. The applications for bitwise operators,
To "set" a bit (where n is the bit number, and bit 0 is
the least significant bit):
unsigned char a |= (1 << n);
To "clear" a bit: unsigned char b &= ~(1 << n);
To "toggle" a bit: unsigned char c ^= (1 << n);
To "test" a bit: unsigned char e = d & (1 << n);
To check a variable is even or odd: var&1, if it's true, then var is odd, otherwise, it's even.
To swap two variables (This is cool!):
int a, int b; a = a^b; b = a^b; a = a^b;
Leave a Reply Cancel reply
40% Discount on My Book — Android NDK Cookbook
Android NDK Cookbook ebook 40% discount with promotion code MREANC40 at Packt Publishing The promotion code is valid until 15th June.Categories
- Android Apps (18)
- Android Audio Editor (1)
- TS 2 (3)
- Video Converter Android (8)
- Video2Gif (1)
- Android Tutorial (26)
- Android Dev Tools (1)
- API illustrated (8)
- Multimedia API (3)
- ffmpeg on Android (4)
- NDK (6)
- UI (5)
- Animation (1)
- Code Snippet (2)
- Coding Beyond Technique (18)
- a word, a world (4)
- Bug Rectified (4)
- Programming Habit (1)
- Software as a Career (1)
- Software as User Experience (1)
- Compilers and Related (2)
- ELF (2)
- Computer Languages (31)
- C/C++ (13)
- Java (9)
- JavaScript (2)
- PHP (1)
- Python (8)
- Data Structure & Algorithms (29)
- Bits (1)
- Data Structure (5)
- Integers (10)
- BigInteger (1)
- Prime (4)
- Search (3)
- Sorting (5)
- Strings (5)
- Database (1)
- SQLite (1)
- Digital Signal Processing (33)
- Distributed Systems (17)
- Apache Cassandra (6)
- Apache Hadoop (8)
- Apache Avro (3)
- Apache Nutch (3)
- Apache Solr (1)
- Linux Study Notes (40)
- crontab (1)
- Linux Kernel Programming (8)
- Linux Programming (12)
- IPC (2)
- Linux Network Programming (5)
- Linux Signals (2)
- Linux Shell Scripting (1)
- ssh (3)
- Machinery (30)
- misc (1)
- My Ideas (1)
- My Project (3)
- Mobile Caching (1)
- Selective Decoding (2)
- My Publication (1)
- My Readings (1)
- Networking (15)
- Program for Performance (8)
- Uncategorized (1)
- Virtual Machine (2)
- Web Dev (8)
- web components (3)
- Android Apps (18)
Recent Comments
Archives
- May 2013 (1)
- April 2013 (1)
- March 2013 (4)
- December 2012 (2)
- November 2012 (6)
- October 2012 (6)
- September 2012 (3)
- August 2012 (13)
- July 2012 (15)
- June 2012 (3)
- May 2012 (8)
- April 2012 (4)
- March 2012 (13)
- February 2012 (19)
- January 2012 (9)
- December 2011 (11)
- November 2011 (12)
- October 2011 (4)
- September 2011 (12)
- August 2011 (16)
- July 2011 (15)
- June 2011 (6)
- May 2011 (10)
- April 2011 (13)
- March 2011 (20)
- February 2011 (4)
- November 2010 (2)
- May 2010 (1)
- April 2010 (1)
- February 2010 (1)




