找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1633|回复: 18
打印 上一主题 下一主题
收起左侧

C语言怎样将8位数的排序反转?

  [复制链接]
跳转到指定楼层
楼主
怎样将8位数的排序反转,例如:01234567,把原来8位数排序改为:76543210。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2022-12-18 22:21 | 只看该作者
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>

  4. int main(int argc, char *argv[]) {
  5.         int32_t i,j;
  6.         int8_t asc[10]="         ";
  7.         for(i=0; i<256; i++) {
  8.                 j=i;
  9.                 j=(j&0x55555555)<<1|(j&0xaaaaaaaa)>>1;
  10.                 j=(j&0x33333333)<<2|(j&0xcccccccc)>>2;
  11.                 j=(j&0x0f0f0f0f)<<4|(j&0xf0f0f0f0)>>4;
  12.                 j=(j&0x00ff00ff)<<8|(j&0xff00ff00)>>8;
  13.                 j=(j&0x0000ffff)<<16|(j&0xffff0000)>>16;
  14.                 printf("0x%x,",(j>>24)&0xff);
  15.         }
  16.         printf("\r\n%s",asc);
  17.         return 0;
  18. }
复制代码
回复

使用道具 举报

板凳
ID:883242 发表于 2022-12-18 22:24 | 只看该作者
  1. 0x0,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,0x90,0x50,0xd0,0x30,0xb0,0x70,0xf0,0x8,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8,0x18,0x98,0x58,0xd8,0x38,0xb8,0x78,0xf8,0x4,0x84,0x44,0xc4,0x24,0xa4,0x64,0xe4,0x14,0x94,0x54,0xd4,0x34,0xb4,0x74,0xf4,0xc,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,0x2,0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,0x12,0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2,0xa,0x8a,0x4a,0xca,0x2a,0xaa,0x6a,0xea,0x1a,0x9a,0x5a,0xda,0x3a,0xba,0x7a,0xfa,0x6,0x86,0x46,0xc6,0x26,0xa6,0x66,0xe6,0x16,0x96,0x56,0xd6,0x36,0xb6,0x76,0xf6,0xe,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,0x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe,0x1,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1,0x11,0x91,0x51,0xd1,0x31,0xb1,0x71,0xf1,0x9,0x89,0x49,0xc9,0x29,0xa9,0x69,0xe9,0x19,0x99,0x59,0xd9,0x39,0xb9,0x79,0xf9,0x5,0x85,0x45,0xc5,0x25,0xa5,0x65,0xe5,0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0xf5,0xd,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0xed,0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,0x3,0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3,0x13,0x93,0x53,0xd3,0x33,0xb3,0x73,0xf3,0xb,0x8b,0x4b,0xcb,0x2b,0xab,0x6b,0xeb,0x1b,0x9b,0x5b,0xdb,0x3b,0xbb,0x7b,0xfb,0x7,0x87,0x47,0xc7,0x27,0xa7,0x67,0xe7,0x17,0x97,0x57,0xd7,0x37,0xb7,0x77,0xf7,0xf,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff
复制代码


如果嫌上面代码运算时间太长,可以用上面代码的输出结果做查表法。
回复

使用道具 举报

地板
ID:1034262 发表于 2022-12-18 23:22 | 只看该作者
用for循环对调一下就OK了。
回复

使用道具 举报

5#
ID:161164 发表于 2022-12-18 23:32 | 只看该作者

回复

使用道具 举报

6#
ID:161164 发表于 2022-12-19 09:17 | 只看该作者
上面那函数运行一次要11110步(12Mhz = 11.11ms)
下面只需3270步(12Mhz = 3.72ms)



回复

使用道具 举报

7#
ID:77589 发表于 2022-12-19 10:37 | 只看该作者
一、把8位十进制数转换成长为8的字符串;
二、把长为8的字符串前后翻转;
三、把翻转后的字符串转换成十进制数。
回复

使用道具 举报

8#
ID:401564 发表于 2022-12-19 13:40 | 只看该作者
把01234567排成76543210它的意义是什么?
或者是说有没有必要这么做
如果是要显示或者发送,几行代码就可以处理了
回复

使用道具 举报

9#
ID:824490 发表于 2022-12-19 15:31 | 只看该作者
楼主需要的是8位(8bit)高低倒置吧?
回复

使用道具 举报

10#
ID:883242 发表于 2022-12-19 17:17 | 只看该作者
名字不是重点 发表于 2022-12-19 15:31
楼主需要的是8位(8bit)高低倒置吧?

我在沙发板凳位贴出来的东西就是8-bit倒置,不知道楼主土遁到哪里去了,连个回复都没有。
回复

使用道具 举报

11#
ID:965189 发表于 2022-12-19 17:26 | 只看该作者
对,高低倒置,因为引脚排序刚好相反,为了排版方便。可能因为我表述得不清楚。不好意思。
回复

使用道具 举报

12#
ID:824490 发表于 2022-12-19 19:50 | 只看该作者
君工创 发表于 2022-12-19 17:26
对,高低倒置,因为引脚排序刚好相反,为了排版方便。可能因为我表述得不清楚。不好意思。

哈哈~~这事我也有过。。12864/1602的8位线倒置。。
这个你试试~~

//8位数据高低位倒置
//ubyte   :需要倒置的源数据
//返回值  :完成倒置后的数据
char inv_char(char ubyte)//8位数据倒置
{
  char i;
char tt;
  for (i=0;i<8;i++)
  {
  tt<<=1;
   if(ubyte&0x01) tt|=0x01;
  ubyte>>=1;
  }
  return tt;
}
回复

使用道具 举报

13#
ID:675287 发表于 2022-12-19 21:49 | 只看该作者
不是可以直接把8个位从高往低读到一个字节上就可以了吗?
回复

使用道具 举报

14#
ID:342822 发表于 2022-12-19 22:13 | 只看该作者
1 00000001 10000000

2 00000010 01000000

3 00000011 11000000

4 00000100 00100000

5 00000101 10100000

6 00000110 01100000

7 00000111 11100000

8 00001000 00010000

回复

使用道具 举报

15#
ID:161164 发表于 2022-12-19 22:55 | 只看该作者
君工创 发表于 2022-12-19 17:26
对,高低倒置,因为引脚排序刚好相反,为了排版方便。可能因为我表述得不清楚。不好意思。

之前看错了以为是8位数反转,下面是8位反转

回复

使用道具 举报

16#
ID:965189 发表于 2022-12-20 12:04 | 只看该作者
名字不是重点 发表于 2022-12-19 19:50
哈哈~~这事我也有过。。12864/1602的8位线倒置。。
这个你试试~~

谢谢你的宝贵经验,你的代码很简洁。到时候我试试。
回复

使用道具 举报

17#
ID:965189 发表于 2022-12-20 12:05 | 只看该作者
lkc8210 发表于 2022-12-19 22:55
之前看错了以为是8位数反转,下面是8位反转

你的代码很简洁,到时候我试下。谢谢你!
回复

使用道具 举报

18#
ID:965189 发表于 2022-12-20 12:08 | 只看该作者
谢谢上面各位大侠的热情帮助。非常感谢!这里就是我等初哥学习的好地方。
回复

使用道具 举报

19#
ID:688692 发表于 2022-12-21 15:43 | 只看该作者

想起最近看到的一个程序员面试视频

“My grandmother run faster than your code!”

别介意哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表