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 >>
