我想知道如何输入分为3位和5位的UInt8。
Var val: UInt8 = 0
Val.bit3 = 0x06 // 110
Val.bit5 = 0x11 // 10000
我想要结果: 11010000或10000110(3bit / 5bit或5bit / 3bit)
extension UInt8 {
var bit3 : UInt8 {
get {
??
}
set(newValue) {
??
}
}
var bit5 : UInt8 {
get {
??
}
set(newValue) {
??
}
}
}
如何进行按位操作以获得上述结果?
...谢谢
答案 0 :(得分:2)
你可以做那样的事情
extension UInt8 {
var bit3 : UInt8 {
get {
return (self & 0b1110_0000) >> 5
}
set(newValue) {
self &= 0b0001_1111
self |= ((newValue << 5) & 0b1110_0000)
}
}
var bit5 : UInt8 {
get {
return self & 0b0001_1111
}
set(newValue) {
self &= 0b1110_0000
self |= (newValue & 0b0001_1111)
}
}
}
bit3
此处为“top”,bit5
为“bottom”。
编辑:在设置
之前忘记清理位