翻转64 32 16 位
2016-07-04 15:35
302 查看
#define Reverse64(val) ((std::uint64_t) ( \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x00000000000000ffU)) << 56) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x000000000000ff00U)) << 40) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x0000000000ff0000U)) << 24) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x00000000ff000000U)) << 8) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x000000ff00000000U)) >> 8) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x0000ff0000000000U)) >> 24) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x00ff000000000000U)) >> 40) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0xff00000000000000U)) >> 56)))
#define Reverse32(val) ((std::uint32_t) ( \
(((std::uint64_t) (val) & \
(std::uint32_t) (0x000000ffU)) << 24) | \
(((std::uint32_t) (val) & \
(std::uint32_t) (0x0000ff00U)) << 8) | \
(((std::uint32_t) (val) & \
(std::uint32_t) (0x00ff0000U)) >> 8) | \
(((std::uint32_t) (val) & \
(std::uint32_t) (0xff000000U)) >> 24)))
#define Reverse16(val) ((std::uint16_t) ( \
(((std::uint16_t) (val) & \
(std::uint16_t) (0x00ffU)) << 8) | \
(((std::uint16_t) (val) & \
(std::uint16_t) (0xff00U)) >> 8)))
(((std::uint64_t) (val) & \
(std::uint64_t) (0x00000000000000ffU)) << 56) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x000000000000ff00U)) << 40) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x0000000000ff0000U)) << 24) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x00000000ff000000U)) << 8) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x000000ff00000000U)) >> 8) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x0000ff0000000000U)) >> 24) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0x00ff000000000000U)) >> 40) | \
(((std::uint64_t) (val) & \
(std::uint64_t) (0xff00000000000000U)) >> 56)))
#define Reverse32(val) ((std::uint32_t) ( \
(((std::uint64_t) (val) & \
(std::uint32_t) (0x000000ffU)) << 24) | \
(((std::uint32_t) (val) & \
(std::uint32_t) (0x0000ff00U)) << 8) | \
(((std::uint32_t) (val) & \
(std::uint32_t) (0x00ff0000U)) >> 8) | \
(((std::uint32_t) (val) & \
(std::uint32_t) (0xff000000U)) >> 24)))
#define Reverse16(val) ((std::uint16_t) ( \
(((std::uint16_t) (val) & \
(std::uint16_t) (0x00ffU)) << 8) | \
(((std::uint16_t) (val) & \
(std::uint16_t) (0xff00U)) >> 8)))
相关文章推荐
- 数组转换成json格式的数据
- poj 3264
- 107. Binary Tree Level Order Traversal II
- R语言笔记五
- iOS --- 错误处理部分(swift2.3)
- 数据库设计
- 生产场景不同角色linux服务器分区案例分享
- ABAP得到系统表的结构
- ID
- csv格式的文件上传下载时,逗号列的处理
- 搜狗校园面试题-最近邻居问题Java实现
- 会计六要素借贷方向
- ios 做不倒翁动画效果
- Jsonp的跨域实现
- bean标签的解析及注册(四)对alias,import,beans标签的处理
- easyui1.4.1下的tree
- MariaDB 数据库操作大全
- Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflow
- 进程调度
- java中多线程中Runnable接口和Thread类介绍