The verb tc (two's complement) appears to work

     tc =: #:~ 2 #~ [: >./ 1 + [: >. (2 ^. |)`(2 ^. >:)@.(0 <: ])"0

     twoscomplement i: 6
  0 1 0
  0 1 1
  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
  1 0 1
  1 1 0

     tc i: 6
  1 0 1 0
  1 0 1 1
  1 1 0 0
  1 1 0 1
  1 1 1 0
  1 1 1 1
  0 0 0 0
  0 0 0 1
  0 0 1 0
  0 0 1 1
  0 1 0 0
  0 1 0 1
  0 1 1 0


On 12/15/2011 12:52 PM, Kip Murray wrote:
> 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