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