Swift-位运算符

//
// main.swift
// Swift-位运算符
//
// Created by dingkang on 16/6/8.
// Copyright © 2016年 dingkang. All rights reserved.
//

import Foundation

位运算符

位运算符通常在如图像处理和创建设备驱动等底层开发中使用,使用它可以单独操作数据结构中原始数据的比特位。去使用一个定义的协议进行通信的时候,运用位运算符来对原始数据进行编码和解码也是非常有效的。


1.按位取反运算符

按位取反运算符~是对一个操作数的每一位都取反

let initialBits:UInt8 = 0b00001111 //定义一个常量为UInt8,也就是8为无符整型,值为00001111
let invertedBits = ~initialBits //使用按位取反运算~对initalBits操作,然后赋值给新常量,常量的值也就是取反后的initialBits,也就是1变成了0,0变成了1,结果也即变成了11110000
print("\(String(invertedBits,radix:2))")//String(invertedBits,radix:2)是把输出结果显示为UInt8,8位无符整型。

输出结果:
这里写图片描述


2.按位与运算符

按位与运算符用于对两个数进行操作,然后返回一个新的数,这个数的每一位都需要两个输入数的同一位都为1时才为1
下面代码中,firstBits和lastBits前后两位都为1。对它们进行了按位与运算后,就得到了11000011。

let firstBits:UInt8 = 0b11000011
let lastBits:UInt8 = 0b11111111
let middleBits:UInt8 = firstBits & lastBits
print("\(String(middleBits,radix:2))")

输出结果:
这里写图片描述


3.按位或运算符

按位或运算符|用于比较两个数,然后返回一个新的数,这个数的每一位数字1的条件就是两个输入数的同一位都不为0(也就是任意一个为1或者两个都为1)

下面代码中,oneBits为00110011和twoBits10101010在不同位上有1,对它们进行了或运算的结果为10111011

let oneBits:UInt8 = 0b00110011
let twoBits:UInt8 = 0b10101010
let threeBits:UInt8 = oneBits | twoBits
print("\(String(threeBits,radix:2))")

输出结果:
这里写图片描述


4.按位异或运算符

按位异或运算符^用于比较两个数,然后返回一个数,这个数的每一位为1的条件就是连个输入数的同一位不同,如果相同就为0。
下面代码中,aBits为10000000,bBits为00000001,两个数都有一个1与另一个数不同,所以按位异或的结果是把它置为1,其他都置为0。

let aBits:UInt8 = 0b10000000
let bBits:UInt8 = 0b00000001
let cBits:UInt8 = aBits ^ bBits
print("\(String(cBits,radix:2))")

输出结果:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值