RainyCats - 2 months ago 12

Swift Question

I'm trying to implement bitboards in Swift and am trying to store a 64bit integer into a UInt64 and get an overflow error.

`var white_queen_bb:uint64 = 0001000000000000000000000000000000000000000000000000000000000000 as UInt64;`

Integer Literal '100000000000000000000000000000000000000000000000000000000000' overflows when stored into 'UInt64'

I'm guessing what happens is that Swift treats the number as a decimal integer and then tries convert it to a binary number which ends up being bigger than 64bits.

Can someone please explain how I would do this.

Thank you

Answer

You're right. Swift by default treats numbers as decimal.
Therefore `let i: UInt64 = 0100`

would have the decimal value 100.

If you want to use a binary number in Swift, use the `0b`

prefix:
`let j: UInt64 = 0b0100`

would have a decimal value of 4.