Re: BitAnd[True,False]
- To: mathgroup at smc.vnet.net
- Subject: [mg131746] Re: BitAnd[True,False]
- From: Itai Seggev <itais at wolfram.com>
- Date: Fri, 27 Sep 2013 02:29:12 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20130925063645.E297C6A74@smc.vnet.net>
On Thu, Sep 26, 2013 at 03:44:04AM -0400, Alan G Isaac wrote:
> On 9/25/2013 4:24 AM, John Fultz wrote:
> > I'm not sure why you might have expected this to work. It
> > wouldn't occur to me at all that bitwise operations would
> > have anything to do with logical truth tables (unless
> > those tables were expressed in values of 0 and 1).
>
> Not expect, but rather hope. And why?
> Because I would hope bitwise operations would treat
> True and False like 1 and 0.
There is a function to do this; it is called Boole.
In[127]:= Boole[{True, False}]
Out[127]= {1, 0}
> (E.g., in Python, True
> and False behave this way, since bool is a subtype
> of int.)
That is common in many languages; it is not the case in Mathematica. For
example, If[1, a,b,c] will return c (neither True nor False), not a, and I
think that is quite correct and useful. I would quite suprised if some
function decided to treat True the same as 1 without conversion
> Let me put it this way:
> what else might one intend by BitAnd[True,False]?
I would expect it to return an integer, not True or False, given that it is
called BitAnd.
> To AND values in two binary (True,False) matrices,
> I think we must do something like:
> MapThread[And, {m1, m2}, 2]
> Being able to just BitAnd[m1,m2] would be nicer.
> But in any case, thank you for the helpful
> explanation of the behavior that puzzled me.
>
> Cheers,
> Alan Isaac
>
>
--
Itai Seggev
Mathematica Algorithms R&D
217-398-0700
- References:
- BitAnd[True,False]
- From: Alan <alan.isaac@gmail.com>
- BitAnd[True,False]