位移问题【标题不合格,如不修正将封锁ID】

2020-01-12 17:16发布

C 语言将一笔数据: 0x83 16进位码
我要将bit0,bit1 资料,移位到bit5,bit6, 且bit7保持不变,其他位清除0
可否大大帮忙看看要如何做
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
.titrwh
1楼-- · 2020-01-12 20:54
if(a&0x80)
{
a<<=5;
a&=~0x1F;
a|=0x80;
}
else
{
a<<=5;
a&=~0x1F;
}
xiaotaiyang
2楼-- · 2020-01-13 00:35
“位移问题”标题不合格,如不修正将封锁ID。
提示:违反版规11。
cloudboy
3楼-- · 2020-01-13 05:15
union
{
    unsigned char raw;
    struct
    {
        unsigned char bit01 : 2;
        unsigned char bit234 : 3;
        unsigned char bit56 : 2;
        unsigned char bit7 : 1;
    }bits;
}tmp_u;

tmp_u.raw = 0x83;
tmp_u.bits.bit56 = tmp_u.bits.bit01;
tmp_u.bits.bit234 = 0;
剩下的看编译器优化了(滑稽)
xiaotaiyang
4楼-- · 2020-01-13 10:24
楼主重复发帖,也是违反版规。

警告一次。下次再收到警告,将可能被直接封锁ID。
.titrwh
5楼-- · 2020-01-13 10:50
 精彩回答 2  元偷偷看……
ztrx
6楼-- · 2020-01-13 13:47
.titrwh 发表于 2019-10-24 14:00
这种屡教不改的可以直接送走了

一周热门 更多>