卡地亚项链经典款love:C语言,那位给一个简洁的算法能把8位二进制数首尾对调

来源:百度文库 编辑:神马品牌网 时间:2024/05/01 23:15:59
比如:0100 0101 ,第一位与第八位换,第二位与第七位换,第三位与第六位换,以次。。。,变成10100010
,要简单洁一点

在这个程序里只讨论正数, 负数的位运算跟正数不一样
自定义了一个数据类型BYTE, 原型为unsigned char
所以BYTE是一个8字节的正数
inp是你想转换的数, 在这里为100
#include <stdio.h>

typedef unsigned char BYTE;

void main()
{
BYTE inp, out;
int bit;
int loop;

inp = 100;
out = 0;

for (loop=0; loop<8; loop++)
{
bit = inp & (1 << loop) ? 1 : 0;
out |= bit << (7 - loop);
}

printf("the result is %d", out);
}

利用栈,先放进去再取出来就是了。也可以用循环语句等。还是栈比较好。

你这个二进制数十怎么保存的
楼上的为什么要用栈?增加额外空间。
直接替换
假设保存在数组p里面,长度为len

int i=0,j=len-1;

while(i<j)
{
int t=p[i];
p[i]=p[j];
p[j]=t;
i++;
j--;
}

按位求反