进制
十六进制(0x
):0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f。
八进制(0o
):0、1、2、3、4、5、6、7
二进制(0b
):0、1
let a = 0x1 // 1
let b = 0x10 // 16
let c = 0o1 // 1
let d = 0o10 // 8
let e = 0b1 // 1
let f = 0b10 // 2
let g = 1 // 1
let h = 10 // 10
如果在数字前方加入对应的进制前缀,则表示当前值需要通过对应的进制转换成十进制的值。如果将这个值赋值给一个变量,则这个变量是Int
类型。
如果没有将值赋值给一个变量,而是直接拼接到一个Array<UInt8>
类型的数组里面,这个值会自动识别成UInt8
类型的值。
let array = Array<UInt8> = []
array.append(0xff)
// 可以成功插入
位运算符
逻辑运算符都是将值转成二进制后,二进制每一位进行处理。
按位移运算符 <<
、>>
// << 左移位,移动几位在后面加几个零。
let a = 0b101 << 1 // 0b1010 = 10
// >> 右移位,移动几位删除后面几位。
let b = 0b101 >> 1 // 0b10 = 2
按位与运算符 &
// 0b101 和 0b111相同位置都为1,则结果为1,否则为0。
let a = 0b101 & 0b111 // a = 5(0b101)
按位或运算符 |
// 0b101 和 0b111相同位置只要有一个为1,则结果为1,否则为0。
let a = 0b101 & 0b111 // a = 7(0b111)
按位取反运算符 ~
// 0b101每一位上1变为0,0变为1。
let a = ~0b101 // a = 2(0b010)
按位异或运算符 ^
// 0b101 和 0b111相同位置只要值不相等,则结果为1,否则为0。
let a = 0b101 & 0b111 // a = 2(0b010)