1

I searched for clear explanation with some example close to real life.

What is bit manipulation?

Why we need to use bit manipulation?

We can use bit manipulation in image processing as far as I know. Can anyone show me a simple problem which can be solved using bit manipulation?

I read about bit manipulation from some link:

Link 1

Link 2

In Link 2 Data compression is done using bit packing. Are there any difference between bit manipulation and bit packing?

It will be appreciable If anyone explain me with very simple example which have resemble to real life problem.

F.C. Akhi
  • 181
  • 1
  • 10

2 Answers2

3

What is bit manipulation?

Bit manipulation usually refers to changing data using bit operators.

I think Wikipedia expains it good enough so I won't write another article.

https://en.wikipedia.org/wiki/Bit_manipulation

Bit manipulation is the act of algorithmically manipulating bits or other pieces of data shorter than a word. Computer programming tasks that require bit manipulation include low-level device control, error detection and correction algorithms, data compression, encryption algorithms, and optimization. For most other tasks, modern programming languages allow the programmer to work directly with abstractions instead of bits that represent those abstractions. Source code that does bit manipulation makes use of the bitwise operations: AND, OR, XOR, NOT, and possibly other operations analogous to the boolean operators; there are also bit shifts and operations to count ones and zeros, find high and low one or zero, set, reset and test bits, extract and insert fields, mask and zero fields, gather and scatter bits to and from specified bit positions or fields. Integer arithmetic operators can also effect bit-operations in conjunction with the other operators.

Bit manipulation, in some cases, can obviate or reduce the need to loop over a data structure and can give many-fold speed ups, as bit manipulations are processed in parallel.

Why we need to use bit manipulation?

Because it is fast and often we don't have another choice. For example in microcontrollers, pretty much everything is controlled by manipulating the bits of 8 bit registers. So an output would go high if you set a certain bit 1.

Bit packing is a compression technique that tries to minimize the number of bits necessary to represent a number. While you'll use bit operators to implement it, it is not the same as "bit-manipulation". It's just one of many many use cases for bit-manipulation.

Can anyone show me a simple problem which can be solved using bit manipulation?

Let's say you have a rgb touple rgb = 0xa1fc03 and you want to make the green channel 0.

rgb_without_green = rgb & 0xFF00FF

We've bitwise ANDed the value with 0xFF00FF.

Now rgb is 0xa10003.

Basically any operation boils down to bit manipulation. For most of them you just have convenient solutions. Say instead of 0x00000011 << 0x0000101 you write 3 * 32

Or have a look at this where the addition of two integers is implemented using bit operations. Add two integers using only bitwise operators?

Edit due to comment

How bitwise AND operation between 0xa1fc03 and 0xFF00FF gives 0xa10003 ? Just I need to see how to do this calculation

Bitwise AND means that you AND all the bits of both numbers.

1 AND 1 -> 1
0 AND 1 -> 0
1 AND 0 -> 0
0 AND 0 -> 0

So

0xa1fc03 -> 0b101000011111110000000011
0xff00ff -> 0b111111110000000011111111
AND ->      0b101000010000000000000011

0b101000010000000000000011 -> 0xa10003

With a bit more expierience you know that 0xFF is 0b11111111 so you instantly know that 0xa1fc03 AND 0xff00ff is 0xa1003 becaue you keep everything that is masked with FF and set everything 0 that is masked with 00.

There are countless resources available. You should not have to ask me how to bitwise AND two numbers. Please do your own research.

Piglet
  • 27,501
  • 3
  • 20
  • 43
0

I am busy designing a new barcode symbology for real-life applications. It uses a checksum value, which is computed on slices of k bits of large numbers. Hence intense bit manipulation.