对一个8位的二进制数进行位倒序

题目要求:一个8比特的数,要求编写一端C程序实现位倒序功能.如:a=b0b1b2b3b4b5b6b7,编程实现a=b7b6b5b4b3b2b1b0(要求实现的速度尽可能的快)

实现有各种方法,如果是汇编似乎会稍微简单点,而要求c语言或许没有那么高效了,我只能想到大家都能想到的一种方法,记下来,以后可以看看。

如果谁有好的方法可以给我留言啊。thanks!

代码::

#include <stdio.h>
void main(){
	int a=0xf0,b=0,i,temp;
	printf("a = %x\n",a);
	for(i=0;i<8;i++){
		temp=a&0x01;
		a=a>>1;
		b=b+temp;
		if(i != 7)
			b=b<<1;
	}
	printf("\n");
	printf("b = %x\n",b);
}



输入为:10100101

输出为:10100101

要实现这个功能,你可以使用C语言中的操作和循环结构。这里是一个简单的程序示例,它接受一个十进制整,然后将其转换为二进制并按相反的顺序打印出来: ```c #include <stdio.h> // 用于存放中间结果的组 char binary[32]; void reverse_binary(int num) { int i = sizeof(binary) - 1; // 从后往前开始计 while (num != 0) { binary[i] = num % 2 + '0'; // 将余转为字符并存入组 num /= 2; // 向左移 i--; } if (binary[0] == '0' && strlen(binary) == 1) { // 如果全是零,不打印 return; } // 反转字符串 for (i = 0; i < (strlen(binary) / 2); i++) { char temp = binary[i]; binary[i] = binary[strlen(binary) - i - 1]; binary[strlen(binary) - i - 1] = temp; } printf("Reversed binary representation of the number is: %s\n", binary); } int main() { int decimal; printf("Enter a decimal integer: "); scanf("%d", &decimal); reverse_binary(decimal); return 0; } ``` 在这个程序中,我们首先定义了一个字符组`binary`来存储二进制字。然后,我们在`reverse_binary`函中用while循环将输入的十进制不断除以2取余,并将每个余(用1或0表示)存入组。接着,如果组的最前面是0并且只有一个元素,那么就是0,不需要输出。否则,我们将组反转并打印。 在`main`函中,我们从用户那里获取输入的十进制,并调用`reverse_binary`函进行处理。 如果你运行这个程序,只需按照提示输入一个十进制整,它就会输出该倒序二进制表示。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值