打印

请教:C51 的位组合问题

[复制链接]
934|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinxi|  楼主 | 2017-3-3 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
keil c语言,
如何把单字节变量a中的 bit位0,1,2,4,5 取出来, 保存到 单字节变量b的位1,0,5,4,2中?

相关帖子

沙发
huangxz| | 2017-3-3 21:38 | 只看该作者
这个循环移位就可以实现的.

使用特权

评论回复
板凳
airwill| | 2017-3-4 16:24 | 只看该作者
比较简单的办法, 使用位寻址区域的变量, 或者用这个地方的变量作为中间变量, 通过位变量处理来完成. 简单直观又容易理解

使用特权

评论回复
地板
沪杭电子人| | 2017-3-22 23:04 | 只看该作者
b =( (a & 1)<<1)  | ((a &2)>>1)  | ((a&4)<<3)  | (a&16) | ((a &32)>>3)

使用特权

评论回复
5
ayb_ice| | 2017-3-23 08:36 | 只看该作者
一位一位的判断或位复制

使用特权

评论回复
6
ff8zgs| | 2017-3-23 09:01 | 只看该作者
本帖最后由 ff8zgs 于 2017-3-23 09:04 编辑

struct  Bytebit
{
        int8_u            bit0  :1;
        int8_u            bit1  :1;
        int8_u           bit2  :1;
        int8_u            bit3  :1;
        int8_u          bit4  :1;
        int8_u            bit5  :1;
        int8_u          bit6  :1;
        int8_u            bit7  :1;        
};

void main(void)
{

        struct  Bytebit a,b;
        b.bit1 = a.bit0;
        b.bit0 = a.bit1;
        b.bit5 = a.bit2;
        b.bit4 = a.bit4;
        b.bit2 = a.bit5;


我想这样应该是最清除的了,也不容易错。对了没有特别注意大小端的问题 。

使用特权

评论回复
7
liubeihua| | 2017-3-24 08:02 | 只看该作者
unsigned char bdata a,b;  //变量定义在位寻址区
sbit  a.bit0=a^0;
sbit  a.bit1=a^1;
sbit  a.bit2=a^2;
sbit  a.bit4=a^4;
sbit  a.bit5=a^5;

sbit  b.bit0=b^0;
sbit  b.bit1=b^1;
sbit  b.bit2=b^2;
sbit  b.bit4=b^4;
sbit  b.bit5=b^5;

void main(void)
{
      b.bit0= a.bit0;
      b.bit1= a.bit1;
      b.bit2= a.bit2;
      b.bit4= a.bit4;
      b.bit5= a.bit5;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

177

帖子

2

粉丝