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