Using Bits
The complete source of builtInTypes_bits.ek9, compiled by the EK9 compiler. Shown on builtInTypes.html.
#!ek9 defines module site.builtintypes.bits defines function booleanToBits() as pure -> bitIsSet as Boolean <- rtn as Bits: bitIsSet <- 0b1 else 0b0 bitsExamples() stdout <- Stdout() //Bits values a <- 0b010011 b <- 0b101010 c <- 0b010011 //Equality Operators equalAB <- a == b //result would be false notEqualAB <- a <> b //result would be true lessAB <- a < b //result would be true lessOrEqualAB <- a <= b //result would be true greaterAB <- a > b //result would be false greaterOrEqualAB <- a >= b //result would be false equalAC <- a == c //result would be true notEqualAC <- a != c //result would be false alsoNotEqualAC <- a <> c //result would be false (alternate syntax) //Joining/Adding Bits set6 <- 0b010011 set7 <- 0b101010 set6set7 <- set6 + set7 //result would be 010011101010 set6true <- set6 + true //result would be 0100111 set6false <- set6 + false //result would be 0100110 set6false += true //set6false would now be 01001101 //Bitwise operations ored <- set6 or set7 //result would be 0b111011 xored <- set6 xor set7 //result would be 0b111001 anded <- set6 and set7 //result would be 0b000010 notted <- ~set6 //result would be 0b101100 alsonotted <- not set6 //result would be 0b101100 stdout.println(`${equalAB} ${notEqualAB} ${lessAB} ${lessOrEqualAB} ${greaterAB} ${greaterOrEqualAB}`) stdout.println(`${equalAC} ${notEqualAC} ${alsoNotEqualAC}`) stdout.println(`${set6set7} ${set6true} ${set6false}`) stdout.println(`${ored} ${xored} ${anded} ${notted} ${alsonotted}`) //Extracting ranges of Bits //assumes function booleanToBits has been defined partial <- cat set6false | skip 3 | map with booleanToBits | collect as Bits //partial has the value of 0b10010 stdout.println(partial) defines program BitsUse() bitsExamples()
Download builtInTypes_bits.ek9
Output
false true true true false false true false false 010011101010 0100111 01001101 111011 111001 000010 101100 101100 10010