请问C语言问题

herokingsky 2006-03-21 06:38:46
请问各位,如何将一个二进制每一个位替换,例如00010001 替换为10001000,也就是最高为与最低为替换,谢谢了.
...全文
187 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
love_xiaoxiao 2006-03-25
  • 打赏
  • 举报
回复
用数组倒序输出数组元素~!~
xiaobubu 2006-03-22
  • 打赏
  • 举报
回复
void revser(int)
{
int iSrc;
int iDst;
int iLen = 0;

while ( iLen < 32 ){
iDst|= (iSrc & 0x1 )<< (31 - iLen );
iLen++;
iSrc>>1;
}


}
digifish 2006-03-21
  • 打赏
  • 举报
回复
#include <stdio.h>

#define b(n,v) (((n&v) != v) && ((n&v) != 0)?(n^v):n)
#define r(x) (b( b( b( b( x, 0x81), 0x42), 0x24), 0x18))


int main(int argc, char **argv) {
unsigned char x = 0x11;

x = r(x);

printf("~x = 0x%x\n", (int)x) ;

return 0;
}
jixingzhong 2006-03-21
  • 打赏
  • 举报
回复
00010001 << 3
就是 10001000 ....
adintr 2006-03-21
  • 打赏
  • 举报
回复
bool lastbit = (x & 0x1); // 保存最低位的值
x &= 0xFE; // 最低位清 0
x |= (x & 0x80 ? 0x1 : 0x0); // 根据最高位设置最低位
x &= 0x7F; // 最高位清 0
x |= lastbit ? 0x80 : 0x0; // 根据最低位设置最高位

这么复杂?
hai_li 2006-03-21
  • 打赏
  • 举报
回复
要改变的位用其与二进制位的1进行异或操作,其他不变的位与0进行异或,即可。】
benlei999 2006-03-21
  • 打赏
  • 举报
回复
不知,up

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧