From: Nameeta Lobo <nlobo_at_bsd.uchicago.edu>

Date: Sat 13 May 2006 - 06:35:44 EST

This email is intended only for the use of the individual or...{{dropped}}

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Sat May 13 06:39:25 2006

Date: Sat 13 May 2006 - 06:35:44 EST

So my final output for the above would read
0011

0101

0110

1001

1010

1100

For 2^6, I was looking for three 1s and so on.

thanks a lot for your help everyone.

any more suggestion!!!!

nameeta

Quoting "Marc Schwartz (via MN)" <mschwartz@mn.rr.com>:

> On Fri, 2006-05-12 at 14:05 -0500, Marc Schwartz (via MN) wrote:

*> > On Fri, 2006-05-12 at 11:41 -0500, Nameeta Lobo wrote:
**> > >
**> > > Hello all again,
**> > >
**> > > I want to do bitwise addition in R. I am trying to generate a matrix
**> > > 0000
**> > > 0001
**> > > 0010
**> > > ....
**> > > ....
**> > > 1111
**> > >
**> > > I know the other ways of generating this matrix but I need to look at
**> bitwise
**> > > addition.
**> > >
**> > > Any suggestions???
**> > >
**> > > thanks a lot
**> > >
**> > > Nameeta
**> >
**> > Nameeta,
**> >
**> > I may be misunderstanding what you are trying to do, so here are two
**> > approaches that might be helpful:
**> >
**> > 1. Presuming that each of the above rows is a binary representation of a
**> > number x >= 0 (so we don't have to worry about two's complements) and
**> > that you want to add the rows to get a total, you can do:
**> >
**> > > mat
**> > [,1] [,2] [,3] [,4]
**> > [1,] 0 0 0 0
**> > [2,] 0 0 0 1
**> > [3,] 0 0 1 0
**> > [4,] 1 1 1 1
**> >
**> > # This will convert each row to it's base 10 value
**> > > apply(mat, 1, function(x) sum(x * (2 ^ ((length(x) - 1):0))))
**> > [1] 0 1 2 15
**> >
**> > # So just sum them
**> > > sum(apply(mat, 1, function(x) sum(x * (2 ^ ((length(x) - 1):0)))))
**> > [1] 18
**> >
**> >
**> > 2. If you want to actually generate the above matrix as a sequence of
**> > binary values from a sequence of base 10 integer values, you can use the
**> > digitsBase() function in Martin's sfsmisc package on CRAN:
**> >
**> > install.packages("sfsmisc")
**> > library(sfsmisc)
**> >
**> > > t(digitsBase(1:15))
**> > Class 'basedInt'(base = 2) [1:4]
**> > [,1] [,2] [,3] [,4]
**> > [1,] 0 0 0 1
**> > [2,] 0 0 1 0
**> > [3,] 0 0 1 1
**> > [4,] 0 1 0 0
**> > [5,] 0 1 0 1
**> > [6,] 0 1 1 0
**> > [7,] 0 1 1 1
**> > [8,] 1 0 0 0
**> > [9,] 1 0 0 1
**> > [10,] 1 0 1 0
**> > [11,] 1 0 1 1
**> > [12,] 1 1 0 0
**> > [13,] 1 1 0 1
**> > [14,] 1 1 1 0
**> > [15,] 1 1 1 1
**>
**>
**> One quick notation here. I just noted that Martin has an as.integer()
**> method for the basedInt class above. This allows for converting the
**> numbers back to base 10 representation. It presumes that the number to
**> be converted is the column, not the row. Thus the transpose of the
**> matrix above results in:
**>
**> > as.integer(t(digitsBase(1:15)))
**> 1 2 3 4
**> 255 3855 13107 21845
**>
**> If you of course leave the matrix as is (as Martin clearly intended),
**> you get:
**>
**> > digitsBase(1:15)
**> Class 'basedInt'(base = 2) [1:15]
**> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
**> [1,] 0 0 0 0 0 0 0 1 1 1 1 1
**> [2,] 0 0 0 1 1 1 1 0 0 0 0 1
**> [3,] 0 1 1 0 0 1 1 0 0 1 1 0
**> [4,] 1 0 1 0 1 0 1 0 1 0 1 0
**> [,13] [,14] [,15]
**> [1,] 1 1 1
**> [2,] 1 1 1
**> [3,] 0 1 1
**> [4,] 1 0 1
**>
**> and therefore:
**>
**> > as.integer(digitsBase(1:15))
**> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
**> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
**>
**>
**> This would make basic arithmetic operations easier. Generating 'mat'
**> above for example:
**>
**> > mat <- digitsBase(c(0:2, 15))
**>
**> # Again, note that each number is a column
**> # not the row
**> > mat
**> Class 'basedInt'(base = 2) [1:4]
**> [,1] [,2] [,3] [,4]
**> [1,] 0 0 0 1
**> [2,] 0 0 0 1
**> [3,] 0 0 1 1
**> [4,] 0 1 0 1
**>
**> > as.integer(mat)
**> 1 2 3 4
**> 0 1 2 15
**>
**>
**> Finally:
**>
**> > sum(as.integer(mat))
**> [1] 18
**>
**> and back to binary:
**>
**> > digitsBase(sum(as.integer(mat)))
**> Class 'basedInt'(base = 2) [1:1]
**> [,1]
**> [1,] 1
**> [2,] 0
**> [3,] 0
**> [4,] 1
**> [5,] 0
**>
**> or even as a character vector:
**>
**> > paste(digitsBase(sum(as.integer(mat))), collapse = "")
**> [1] "10010"
**>
**>
**> HTH,
**>
**> Marc Schwartz
**>
**>
**>
**>
**>
*

This email is intended only for the use of the individual or...{{dropped}}

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Sat May 13 06:39:25 2006

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.1.8, at Sun 14 May 2006 - 08:10:09 EST.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*