Keep It Simple, Stupid PerlMonks

### Re: How can I set a bit to 0 ?

by harangzsolt33 (Chaplain)
 on May 28, 2022 at 02:19 UTC Need Help??

in reply to How can I set a bit to 0 ?

The XOR operator works just like the bitwise NOT operator (~) because it flips bits, but it takes two inputs. Input number 1 determines which bits will be negated in input number 2:

For example, 0000 ^ 0000 will simply leave all the bits zero.
1111 ^ 0000 will flip all the bits, so they become 1111.
1000 ^ 0000 will flip only the first bit and leave the rest unchanged. Result: 1000
1110 ^ 1101 will flip the first three bits and leave the last one unchanged. Result: 0011

The AND operator turns specific bits OFF. It takes two input numbers. The bits in input number 1 determine which bits in input number will be turned off. The ones that are zero will be turned off. Here is an example:

1001 ^ 0110 = 0000
1100 ^ 0111 = 0100
0000 ^ 1111 = 0000
1000 ^ 1111 = 1000

See, this is really simple. Here is a tiny example program:

```#!/usr/bin/perl -w

use strict;
use warnings;

\$a = 4;

print "\n ORIGINAL = \$a";

\$a &= 0xFFFB;    # 0xFFFB = 1111111111111011 binary

print "\nCLEAR BIT = \$a";

\$a |= 4;

print "\n  SET BIT = \$a";

print("\n  XOR BIT = ", (\$a ^ 0));

print("\n  XOR BIT = ", (\$a ^ 0xF));

exit;

Replies are listed 'Best First'.
Re^2: How can I set a bit to 0 ?
by AnomalousMonk (Archbishop) on May 28, 2022 at 04:49 UTC
Input number 1 determines which bits will be negated in input number 2 ...

Just a note of caution: This phrasing suggests that the order of the operands affects the result of the ^ (bitwise-xor) operator, but it does not. The order is irrelevant:

```Win8 Strawberry 5.8.9.5 (32)  Sat 05/28/2022  0:35:22
C:\@Work\Perl\monks
>perl

use strict;
use warnings;

printf "%04b \n", 0b1100 ^ 0b0111;
printf "%04b \n", 0b0111 ^ 0b1100;

^Z
1011
1011
And likewise for the | (bitwise-or) and & (bitwise-and) operators.

Update: Slight change to phrasing of first sentence for clarity.

Give a man a fish:  <%-{-{-{-<

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11144242]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (1)
As of 2023-10-04 22:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?

No recent polls found

Notices?