在开发中,有时候会遇到位操作(bit),有人会问什么是bit?
其实最简单的回答就是1B = 8bit,即一个字节等于8个bit(比特)。
那怎么把8个bit合成1B呢?
看下图
其中每一个方框就是一个bit,每个方框里也只能填0或者1。
那如何将一个Byte里面的bit变成我们想要的呢?
下面举一个例子,假如想要Byte里面的8个bit是11101101,可以这样写:
Byte temp = 1*0x80 | 1 * 0x40 | 1 * 0x20 | 0*0x10 | 1*0x8 | 1*0x4 | 0*0x2 | 1*0x1 ;
有了合成,就肯定有拆分,拆分直接调用小编写的下列方法即可
#pragma mark 拆分byte为bit
- (NSArray *)breakUpByte:(Byte)byte
{
NSMutableArray *arr = [NSMutableArray array];
while (byte > 0) {
int i = byte % 2;
byte = byte / 2;
[arr addObject:[NSString stringWithFormat:@"%d",i]];
}
// 判断数组是否含有8个bit
while (arr.count < 8) {
[arr addObject:[NSString stringWithFormat:@"%d",0]];
}
// 数组倒序
NSArray *temp = [[arr reverseObjectEnumerator] allObjects];
return temp;
}
希望对各位看官们有所帮助
网友评论