twoscomplement i: 4  NB. error
  1 0 0
  1 0 1
  1 1 0
  1 1 1
  0 0 0
  0 0 1
  0 1 0
  0 1 1
  1 0 0

     rp =: [: }: [: i: 2 ^ <:  NB. representable in y bits

     rp 3
  _4 _3 _2 _1 0 1 2 3

     twoscomplement rp 3  NB. OK
  1 0 0
  1 0 1
  1 1 0
  1 1 1
  0 0 0
  0 0 1
  0 1 0
  0 1 1


On 12/14/2011 9:13 AM, Raul Miller wrote:
> The subject line of this thread is arguably wrong -- there are a
> variety of "good ways" of decomposing integers to binary.
>
> That said, it's interesting to think about the various proposals
> expressed in terms similar to those which could be used to implement
> monadic #:
>
> antibase2=:      #:~    2 #~ 1 + 2<.@^. 1>.>./@,@:|@:<.
> twoscomplement=: #:~    2 #~ 1 + 2<.@^. 1 +>./@,@:|@:<.
> signwithbits=:   #:~ 0, 2 #~ 1 + 2<.@^. 1>.>./@,@:|@:<.
>
> (In all cases the #: here is dyadic, so these definitions are
> independent of the definition of monadic #:)
>
>     antibase2 i: 3
> 0 1
> 1 0
> 1 1
> 0 0
> 0 1
> 1 0
> 1 1
>     twoscomplement i: 3
> 1 0 1
> 1 1 0
> 1 1 1
> 0 0 0
> 0 0 1
> 0 1 0
> 0 1 1
>     signwithbits i: 3
> _1 0 1
> _1 1 0
> _1 1 1
>   0 0 0
>   0 0 1
>   0 1 0
>   0 1 1
>
> There's also (* * #:) but that one assumes the antibase2 implementation...
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to