如何从“镜像二进制端口B位”;11010000“;至;00001011“;在C上?

如何从“镜像二进制端口B位”;11010000“;至;00001011“;在C上?,c,binary,bit-manipulation,microcontroller,C,Binary,Bit Manipulation,Microcontroller,代码: PORTB = "0b11010000"; 问题: PORTB = "0b11010000"; 我现在正在学习在MPLab上用C语言编程一个8位微控制器PIC18F8722 如何将这个二进制端口B位从“11010000”镜像到“00001011”关于C中位操作的最好文章是肖恩·埃隆·安德森写的。他提供了许多类型的位函数以优化的方式进行操作。他的方法被全世界接受,许多图书馆使用这些方法以优化的方式做事情。他提供的位的反转方式: 反转位序列: 倒装 通过查找表反转字中的位 通过3次操

代码:

PORTB = "0b11010000";
问题:

PORTB = "0b11010000";
我现在正在学习在MPLab上用C语言编程一个8位微控制器PIC18F8722


如何将这个二进制端口B位从“11010000”镜像到“00001011”

关于C中位操作的最好文章是肖恩·埃隆·安德森写的。他提供了许多类型的位函数以优化的方式进行操作。他的方法被全世界接受,许多图书馆使用这些方法以优化的方式做事情。他提供的位的反转方式:

  • 反转位序列:
    • 倒装
    • 通过查找表反转字中的位
    • 通过3次操作(64位乘法和模除法)反转字节中的位
    • 通过4次操作(64位乘法,无除法)反转字节中的位
    • 使用7次操作反转字节中的位(无64位,仅32位)
    • 与5*lg(N)操作并行反转N位量
显而易见的方式
无符号整数v;//要反转的输入位
无符号整数r=v;//r将是v的反向位;首先得到v的LSB
int s=sizeof(v)*字符位-1;//最后需要额外轮班
对于(v>>=1;v;v>>=1){

r关于C中Bits操作的最佳文章由Sean Eron Anderson撰写。他提供了多种类型的Bit函数以优化的方式进行操作。他的方法在世界范围内被接受,许多库使用这些方法以优化的方式进行操作。他提供的Bits反转方式:

  • 反转位序列:
    • 倒装
    • 通过查找表反转字中的位
    • 通过3次操作(64位乘法和模除法)反转字节中的位
    • 通过4次操作(64位乘法,无除法)反转字节中的位
    • 使用7次操作反转字节中的位(无64位,仅32位)
    • 与5*lg(N)操作并行反转N位量
显而易见的方式
unsigned int v;//要反转的输入位
unsigned int r=v;//r将是v的反向位;首先获取v的LSB
int s=sizeof(v)*字符位-1;//结束时需要额外移位
对于(v>>=1;v;v>>=1){

r这是一个嵌入式家伙的表演:

unsigned char Reverse_bits(unsigned char num){

    int i=7; //size of unsigned char -1, on most machine is 8bits
    unsigned char j=0;
    unsigned char temp=0;

    while(i>=0){
    temp |= ((num>>j)&1)<< i;
    i--;
    j++;
    }
    return(temp); 

}

这是一个嵌入式guy的格式副本:

unsigned char Reverse_bits(unsigned char num){

    int i=7; //size of unsigned char -1, on most machine is 8bits
    unsigned char j=0;
    unsigned char temp=0;

    while(i>=0){
    temp |= ((num>>j)&1)<< i;
    i--;
    j++;
    }
    return(temp); 

}

这是一个简单的位反转操作-您可以使用LUT(256个条目)或各种著名的位级黑客之一。另请参见该“代码”非常可疑。
PORTB
可能不是字符串,而且C中没有
0b
-前缀。这是一个简单的位反转操作-您可以使用LUT(256个条目)或各种著名的位级黑客。请参见,例如,该“代码”很可疑。
PORTB
可能不是字符串,C中没有前缀
0b
。如果数字左移,除了最后一个之外的所有位都将丢失。那么再次右移的意义是什么?如果数字左移,除了最后一个之外的所有位都将丢失。那么右移的意义是什么呢别再换了?