C 将布尔数组的最后一个元素设置为位字段中的最高有效位
假设有一个布尔数组,包含7个元素,如C 将布尔数组的最后一个元素设置为位字段中的最高有效位,c,bit-fields,C,Bit Fields,假设有一个布尔数组,包含7个元素,如 boolean myArray = {1,0,1,1,1,0,1} 我要在位字段中表示的数组: uint8 myBitfieldofmyArray; 将数组的最后一个元素设置为myBitfieldofmyArray中的最高有效位非常重要。 不考虑最低有效位(位0),默认情况下始终为0 使用以下解决方案,1.1元素被设置为最高有效位: uint8_t myBitfieldofmyArray= 0; for (int i = 0; i < 7; i++
boolean myArray = {1,0,1,1,1,0,1}
我要在位字段中表示的数组:
uint8 myBitfieldofmyArray;
将数组的最后一个元素设置为myBitfieldofmyArray中的最高有效位非常重要。
不考虑最低有效位(位0),默认情况下始终为0
使用以下解决方案,1.1元素被设置为最高有效位:
uint8_t myBitfieldofmyArray= 0;
for (int i = 0; i < 7; i++) {
myBitfieldofmyArray|= myArray[i] ? 1 : 0;
myBitfieldofmyArray<<= 1;
}
uint8\u t myBitfieldofmyArray=0;
对于(int i=0;i<7;i++){
myBitfieldofmyArray |=myArray[i]?1:0;
myBitfieldofmyArray您可以使用“反向循环”:
#包括
#包括
#包括
int main(){
布尔myArray[7]={1,0,0,1,1,0,0};
uint8_t myBitfieldofmyArray=0;
对于(int i=6;i>=0;--i){
myBitfieldofmyArray |=myArray[i];
myBitfieldofmyArray如果要从MSB开始存储位字段,可以将循环更改为:
for(int i=0;i一种简单的方法是使用两个计数器将位从array[0]
开始的数组循环移位到uint8
中的位,从MSB开始,增加数组索引,同时减少位位置,例如
uint8_t myBitfieldofmyArray = 0, i = 7, j = 0;
while (i--)
myBitfieldofmyArray |= myArray[j++] << (i + 1);
uint8\u t myBitfieldofmyArray=0,i=7,j=0;
而(我--)
myBitfieldofmyArray |=myArray[j++]
uint8_t myBitfieldofmyArray = 0, i = 7, j = 0;
while (i--)
myBitfieldofmyArray |= myArray[j++] << (i + 1);