Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Re: Bit operations for beginners

by dorko (Prior)
on Aug 08, 2003 at 22:18 UTC ( [id://282329]=note: print w/replies, xml ) Need Help??


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

I also find it useful to have them all in one chart. I also agree with liz about the xor results.

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 0 1 0 1 0 1
1 1 1 0 0 1 0
* Table created from Prelab 1 for EEL 3342 / Digital Electronics at the UCF, Sept. 17, 1992.
** Note: I number my A and B differently than both liz and Cine.

Cheers,

Brent
-- Yeah, I'm a Delt.

Replies are listed 'Best First'.
Re: Re: Re: Bit operations for beginners
by demerphq (Chancellor) on Aug 09, 2003 at 16:34 UTC

    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...
      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.

      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://282329]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (3)
As of 2024-04-19 23:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found