C 扩展十六进制数
所以我有以下十六进制数:C 扩展十六进制数,c,bit-manipulation,bit,C,Bit Manipulation,Bit,所以我有以下十六进制数: 0x55 which is 0101 0101 我需要把它扩展到0x5555。我只能使用以下操作: Legal ops: ! ~ & ^ | + << >> 法律行动:!~&^ |+> 我有点困惑我该怎么做。我知道我们肯定要向左走。我相信这是一个简单的问题,所以我很抱歉,我现在无法再思考了。好吧,你有8位,需要再复制3份。一种方法是复制一个16位的数字,然后再复制两个,这样就得到了32位。要复制,请将所需的位数向左移位,并与原件一
0x55 which is 0101 0101
我需要把它扩展到0x5555。我只能使用以下操作:
Legal ops: ! ~ & ^ | + << >>
法律行动:!~&^ |+>
我有点困惑我该怎么做。我知道我们肯定要向左走。我相信这是一个简单的问题,所以我很抱歉,我现在无法再思考了。好吧,你有8位,需要再复制3份。一种方法是复制一个16位的数字,然后再复制两个,这样就得到了32位。要复制,请将所需的位数向左移位,并与原件一起“或”<代码>无符号x=0x55;x |=x这现在很有道理!谢谢@gene如果你不被“允许”使用赋值运算符,真倒霉,没有办法这么做。op不被“允许”使用赋值运算符。
#include <stdio.h>
int main( )
{
unsigned int orig = 0x55;
unsigned int new;
new = orig | orig << 8 | orig << 16 | orig << 24;
printf( "orig: 0x%x\n", orig );
printf( "new: 0x%x\n", new );
return 0;
}
orig: 0x55
new: 0x55555555