开篇
今天在修改项目的时候,看见enum中出现了<<操作符(位操作),之前对这个一直都不了解。这次趁着项目比较清闲,抽出时间来全面了解一下位操作。
位操作
位操作是对二进制数逐位进行运算或移位。它共包含两种操作:位运算和移位。下面就详细的了解一下这两种操作。
在此只讨论iOS中的所有位操作的运算符,别的语言的相同含义的操作符号可能不同
位运算符(以下操作符皆同Objective-C)
位运算符一种包含下面几种:
~(取反,一元操作符):它会对目标数字的二进制每位进行取反
let initialBits: UInt8 = 0b00001111
let invertedBits = ~initialBits // equals 11110000
|(按位或):它会对两个目标数字的相同位置数字进行或运算,规则:0和0为0;0和1为1;1和1为1
let targetNum = 5 // 101
let targetNum2 = 6 // 110
print(targetNum | targetNum2) //print 7
//targetNum: 101
//targetNum2: 110
//result: 111 (十进制 7)
&(按位与):它会对两个目标数字的相同位置数字进行与运算,规则:0和0为0;0和1为0;1和1为1
let targetNum = 5 // 101
let targetNum2 = 6 // 110
print(targetNum & targetNum2) //print 4
//targetNum: 101
//targetNum2: 110
//result: 100 (十进制 4)
^(异或):它会对两个目标数字的相同位置数字进行异或运算,如果不同则该位为1,否则该位为0。规则:如0和0为0;0和1为1;1和1为0










