Problems? Is your data what you think it is? PerlMonks

### Re^2: Bit operations for beginners

by ikegami (Pope)
 on Jun 27, 2005 at 23:20 UTC ( #470415=note: print w/replies, xml ) Need Help??

in reply to Re: Bit operations for beginners
in thread Bit operations for beginners

For two inputs, there are 16 operations. Most of them are rarely useful, which is why we don't have Perl operators for them.

By the way, everything can be implemented solely with nand:

``` p | q | p nand q
---+---+----------
0 | 0 |    1
0 | 1 |    1
1 | 0 |    1
1 | 1 |    0

not p   === p nand p
p and q === (p nand q) nand (p nand q)
p or q  === (p nand p) nand (q nand q)
p xor q === (p nand (q nand q)) nand ((p nand p) nand q)

Other operatations could also be used instead of nand. nor, for example:

``` p | q | p nor q
---+---+---------
0 | 0 |    1
0 | 1 |    0
1 | 0 |    0
1 | 1 |    0

~(p nor q)

not p   === p nor p
p and q === (p nor p) nor (q nor q)
p or q  === (p nor q) nor (p nor q)
p xor q === [something very long]

Replies are listed 'Best First'.
Re^3: Bit operations for beginners
by BrowserUk (Pope) on Jun 28, 2005 at 01:05 UTC
p xor q === [something very long]

Hell's teeth! You weren't kidding.

I remember xor as (p and not q) or (q and not p) and it's been something like 30 years since I played with nand and nor expansions, so I expanded that:

```xor === (p and not q) or (q and not p)

expand the 'not's
=== (p and (q nor q)) or (q and (p nor p))

expand the 'and's
=== ((p nor p) nor ((q nor q) nor (q nor q)))
or ((q nor q) nor ((p nor p) nor (p nor p)))

expand the 'or's
=== (((p nor p) nor ((q nor q) nor (q nor q)))
nor ((q nor q) nor ((p nor p) nor (p nor p))))
nor (((q nor q) nor ((p nor p) nor (p nor p)))
nor ((p nor p) nor ((q nor q) nor (q nor q))))

Then it struck me that ((x nor x) nor (x nor x)) is x, which reduces it to

```    === (((p nor p) nor q) nor ((q nor q) nor p))
nor (((q nor q) nor p) nor ((p nor p) nor q))

It's certainly more digestable (just :), but are there any other reductions in there?

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.

Yeah, you might enjoy:

(p nor q) nor ((p nor p) nor (q nor q))

Remember that nor returns true only if both arguments are false. So, we want to return true if the inputs aren't both false or both true. The former is simply p nor q and the latter is (not p) nor (not q) and we use the expansion of not.

Create A New User
Node Status?
node history
Node Type: note [id://470415]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (7)
As of 2018-05-24 16:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
World peace can best be achieved by:

Results (179 votes). Check out past polls.

Notices?