Beefy Boxes and Bandwidth Generously Provided by pair Networks
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 ( [id://11144242]=note: print w/replies, xml ) 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:  <%-{-{-{-<

Log In?
Username:
Password:

What's my password?
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?Last hourOther CB clients
Other Users?
Others studying the Monastery: (5)
As of 2024-04-25 15:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found