热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

怎么把一个字节里的比特顺序倒转?

思路1:查表法。查表法速度最快。unsignedcharreverse_byte(unsignedcharx){staticconstunsignedchartab

思路1:查表法。查表法速度最快。

unsigned char reverse_byte(unsigned char x)
{static const unsigned char table[] = {0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,};return table[x];
}


思路2:依次检查各个bit,并逆转顺序

unsigned char reverse(unsigned char c) {int shift;unsigned char result = 0;for (shift = 0; shift > shift);}return result;
}


思路3:依次检查各个bit

template
T reverse(T n, size_t b = sizeof(T) * CHAR_BITS)
{assert(b <&#61; sizeof(T) * CHAR_BITS);T rv &#61; 0;for (size_t i &#61; 0; i >&#61; 1)rv &#61; (rv <<1) | (n & 0x01);return rv;
}







推荐阅读
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
author-avatar
zoey小
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有