I opened a bug entry.
https://pharo.fogbugz.com/f/cases/20257/bitAnd-description-is-wrong

On Tue, Jul 18, 2017 at 11:16 PM, Stephane Ducasse
<[email protected]> wrote:
> Thanks Koos. This description is indeed wrong.
>
>
> On Tue, Jul 18, 2017 at 8:47 PM, Koos Brandt <[email protected]> wrote:
>> Hi
>>
>>  I am new to this environment
>>
>> I am on Pharo 6.0 - 64 Mac OSX version, Downloaded over the weekend.
>>
>> Just did some learning and found that the description for bitAnd: is
>> probably wrong.
>>
>> It reads exactly the same as bitOr:
>>
>> here are some tests as performed in the workspace
>> Also included bitXor: for the fun of it
>>
>> bitAnd: arg
>> Primitive. Answer an Integer whose bits are the logical OR of the
>> receiver's bits and those of the argument, arg.
>> Numbers are interpreted as having 2's-complement representation.
>> Essential.  See Object documentation whatIsAPrimitive.
>> <primitive: 14>
>> self >= 0 ifTrue: [^ arg bitAnd: self].
>> ^ (self bitInvert bitOr: arg bitInvert) bitInvert.
>> 0 bitAnd: 0 -> 0
>> 1 bitAnd: 0 -> 0
>> 2 bitAnd: 0 -> 0
>> 3 bitAnd: 0 -> 0
>> 0 bitAnd: 1 -> 0
>> 1 bitAnd: 1 -> 1
>> 2 bitAnd: 1 -> 0
>> 3 bitAnd: 1 -> 1
>>
>> bitOr: arg
>> Primitive. Answer an Integer whose bits are the logical OR of the
>> receiver's bits and those of the argument, arg.
>> Numbers are interpreted as having 2's-complement representation.
>> Essential.  See Object documentation whatIsAPrimitive.
>> <primitive: 15>
>> self >= 0 ifTrue: [^ arg bitOr: self].
>> ^ arg < 0
>> ifTrue: [(self bitInvert bitAnd: arg bitInvert) bitInvert]
>> ifFalse: [(self bitInvert bitClear: arg) bitInvert]
>> 0 bitOr: 0 -> 0
>> 1 bitOr: 0 -> 1
>> 2 bitOr: 0 -> 2
>> 3 bitOr: 0 -> 3
>> 0 bitOr: 1 -> 1
>> 1 bitOr: 1 -> 1
>> 2 bitOr: 1 -> 3
>> 3 bitOr: 1 -> 3
>>
>> bitXor: arg
>> Primitive. Answer an Integer whose bits are the logical XOR of the
>> receiver's bits and those of the argument, arg.
>> Numbers are interpreted as having 2's-complement representation.
>> Essential.  See Object documentation whatIsAPrimitive.
>> <primitive: 16>
>> self >= 0 ifTrue: [^ arg bitXor: self].
>> ^ arg < 0
>> ifTrue: [self bitInvert bitXor: arg bitInvert]
>> ifFalse: [(self bitInvert bitXor: arg) bitInvert].
>> 0 bitXor: 0 -> 0
>> 1 bitXor: 0 -> 1
>> 2 bitXor: 0 -> 2
>> 3 bitXor: 0 -> 3
>> 0 bitXor: 1 -> 1
>> 1 bitXor: 1 -> 0
>> 2 bitXor: 1 -> 3
>> 3 bitXor: 1 -> 2
>>
>> Picked it up when I was trying to explain the simplicity of the even method
>> on smallInteger.
>>
>> Methods work just fine, but the description is wrong
>>
>> regards
>> Koos brandt
>>

Reply via email to