Re: Number of Differing Digits & Another Problem (want to see different

• To: mathgroup at smc.vnet.net
• Subject: [mg76334] Re: Number of Differing Digits & Another Problem (want to see different
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Sun, 20 May 2007 02:20:35 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <f2mf5b\$mbm\$1@smc.vnet.net>

```VenDiddy at gmail.com wrote:
> I just purchased a copy of Mathematica and I've been learning it for
> about a week now. You can expect that I will be posting a lot of
> questions. One thing I've noticed is that there are so many different
> ways to do the same thing!
>
> Here is a function I came up with that calculates how many binary
> digits two numbers differ in:
>
> BitDifferences[a_, b_, n_] :=
>  Count[Equal @@@
>    Thread[{IntegerDigits[a, 2, n], IntegerDigits[b, 2, n]}], True]
---------------------------------------------------------------^^^^
Here, I believe you want to count the occurrences of False rather than True.

>
> For example 5 = 101 differs from 6 = 111 by one digit (the middle
> digit).

The number 6 (decimal) is 110 in binary.

(BaseForm[#1, 2] & ) /@ {5, 6}
==> {101, 110}

> I want to see how you would do it so I can broaden my Mathematica
> perspective.
>
> Thanks.

One possible way is the following:

In[1]:=
BitDifferences2[a_, b_] :=
Module[{n},
n = Max[Length /@
(IntegerDigits[#1, 2] & ) /@
{a, b}]; Total[
(Boole[#1[[1]] !=
#1[[2]]] & ) /@
Transpose[(IntegerDigits[#1,
2, n] & ) /@ {a, b}]]]

BitDifferences2[5, 6]
BitDifferences2[5, 256]

Out[2]=
2

Out[3]=
3

Regards,
Jean-Marc

```

• Prev by Date: [Mathematica 6] Sudden shutdown of Mathematica. No error messages, no traces, no warning. Mathematica just disappears from desktop
• Next by Date: Re: v.6 Editing Stylesheets
• Previous by thread: Re: Sudden shutdown of Mathematica. No error messages, no traces, no warning. Mathematica just disappears from desktop
• Next by thread: Re: Number of Differing Digits & Another Problem (want to see different