Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Re: Re: Bit operations for beginners

by demerphq (Chancellor)
on Aug 09, 2003 at 16:34 UTC ( [id://282441]=note: print w/replies, xml ) Need Help??


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

Yep, thats the kind of thing I had in mind. Except that I find it useful to have a chart that has all of the posibile permutations of binary boolean operations. For one it makes it easier to see how you can construct operators from each other. But mostly because I personally find it interesting how the chart of possible operators can be interpreted in different ways, and how complete it is. For instance XOR is commonly used computing and engineering, but rarely in symbolic logic, whereas -> (the conditional) is the opposite.

Actually I've always found this chart to be fascinating and for lack of a better term, very "deep". The fact that the binary enumeration of 0-15 happens to encode all the binary operators (at least in a boolean sense), along with the unary NOT, identity and empty set, and that you can construct all from some, but not all from every is somewhat amazing to me. I guess its just psychobable but to me theres something special there. The first time I put one together I sort of felt like I had just discovered the boolean table of elements or something. Anyway, I digress. :-)

DecBinAB0!(A || B)!A && B!AA && !B!BA ^ B!(A && B)A && BA == BB!A || BAA || !BA || B1
000000101010101010101
101010011001100110011
210100000111100001111
311110000000011111111
DecBinABFalse
(1)
nor
neither
(2,8)
lt
(3,9)
¬A
not A
(4)
gt
(3,9)
¬B
not B
(4)
xor
ne
(5,8)
nand
(2,8)
and
both
conjunct.
A∧B
A•B
(8)
xnor
bicond.
eq
A≡B
(5,8)
B
(6)
A→B
A⊃B
le
cond.
(7,9)
A
(6)
B→A
B⊃A
ge
cond.
(7,9)
or
either
disjunct.
A∨B
A+B
(8)
True
(1)
  1. (*) These are included for completeness. They also have special properties, like A==A or 0, B==B and 1.
  2. These are interesting in that its fairly easy to construct any other operator from either alone.
  3. (**)Im not sure what to call these. Perhaps 'falsifies' as in 'B falsifies A' or 'A falsifies B'. They are the reverse of the conditional or implication (see 7).
  4. (*) Negation
  5. This is logical equality and logical inequality not the traditional perl value equivelence. However using negation you can ensure perl value equivelence as well, ie !$a == !$b or !$a != !$b (the later is better written $a ^ $b)
  6. (*) Identity.
  7. (**)Conditional or implication. A implies B. This is only false when A is True and B is not True. Symbolic logic makes heavy use of this operator, where it can be used to test the truth of assertions like "if A then B".
  8. Commutative and associative. A op B == B op A and ( A op B ) op C == A op ( B op C
  9. )
  10. Transitive and Non Associative. A op B != B op A. If A op B
  11. and B op C then A op C.

    (*) It may be a bit strange to think of these as binary operators, but its not that big of a stretch to do so. And in visualizing the relationships between the other more important operators I find its useful to include them.

    (**) 3 and 7 are interesting in that in effect they are the boolean equivelents of the relational operators.

Like you I order my chart as a mathematician, engineer or programmer would, and not as a philosopher (who usually use T and F and who "count" from True to False), nor as Cine did. In fact I find his ordering quite unusual, and might even venture to argue that it is plain "wrong" to do so. I certainly think that both of the latter approaches make visualizing the enumeration of the possible input/output states to be much less intuitive. (Actually the whole T/F and ordering thing really got my goat in certain classes in school.)


---
demerphq

<Elian> And I do take a kind of perverse pleasure in having an OO assembly language...

Replies are listed 'Best First'.
Re: Re: Re: Re: Bit operations for beginners
by dorko (Prior) on Aug 10, 2003 at 00:31 UTC
    I used a chart like yours too for a while. After the instructor completed Boolean algebra and tested us on it, we weren't required to use it any more. At that point Karnaugh maps became my good friend! I guess that marks me as an engineer...
    Like you I order my chart as a mathematician, engineer or programmer would ...

    I found the following counting method most useful as it worked best with K-maps. In fact, this is the table I sketched into the front cover of my digital circuits textbook :)

    A B A or B A nor B A xor B A and B A nand B
    0 0 0 1 0 0 1
    0 1 1 0 1 0 1
    1 1 1 0 0 1 0
    1 0 1 0 1 0 1

    Cheers,

    Brent
    -- Yeah, I'm a Delt.

Re^4: Bit operations for beginners
by ambrus (Abbot) on Jun 24, 2005 at 11:11 UTC

    The A && !B function also has another name apart from gt: >>.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://282441]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (3)
As of 2024-03-29 05:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found