• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++二进制翻转实例分析

C++二进制翻转实例分析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ 二进制文件,c++十进制转二进制,c++读取二进制文件,c++二进制,c++二进制输出等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C++二进制翻转的方法,将常用的几种解决方法罗列出来供大家比较选择。具体如下:

首先来看看一个相对笨拙的算法:

#include <iostream>

using namespace std;

void printBinary(unsigned char str, int size = 1)
{
 int flag = 0x01;
 for (int i = 0; i < size; i++)
 {
 for (int i = 0; i < 8; i++)
 {
  if (str & (0x01 << (7 - i)))
  cout << "1";
  else
  cout << "0";
 }
 cout << endl;;
 }
}

unsigned char mySwap(unsigned char data)
{
 unsigned char flag = 0x01;
 for (int i = 0, j = 7; i < j; i++, j--)
 {
 int right = data & (0x01 << i);
 int left = data & (0x01 << j);
 data &= ~(0x01 << j);
 data &= ~(0x01 << i);
 int dist = j - i;
 data |= (right << dist);
 data |= (left >> dist);
 }
 return data;
}

void main(void)
{
 char source=0x07;
 int i;
 printBinary(source, 1);
 unsigned char result = mySwap(source);
 printBinary(result);
}

</div>

下面这个翻转程序相对上面实例而言简洁高效:

unsigned char swapBinary(unsigned char data)
{
 int sign = 1;
 unsigned char result = 0;
 for (int i = 0; i <= 7; i++)
 {
 result += ((data & (sign << i)) >> i) << (7 - i);
 }

 return result;
}

</div>

下面这个反转程序比较容易理解:

unsigned char swapBinary2(unsigned char data)
{
 data=(( data & 0xf0) >> 4) | ((data & 0x0f) << 4); 
 data=((data & 0xCC) >> 2) | ((data & 0x33) << 2); 
 data=((data & 0xAA) >> 1) | ((data & 0x55) << 1); 
 return data; 
}

</div>

最后这个超牛的反转程序简直碉堡了。。。

unsigned char codeTable[16]={0x00, 0x08, 0x04, 0x0c, 0x02, 0x0a, 0x06, 0x0e, 0x01, 0x09, 0x05, 0x0d, 0x03, 0x0b, 0x07, 0x0f}; 

unsigned char swapBinary3(unsigned char data) 
{ 
 return ((codeTable[data >> 4]) | (codeTable[data & 0x0f] << 4));
}

</div>

希望本文所述对大家C++程序算法设计的学习有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 深入理解C++中的文件操作
  • C++中输出十六进制形式的字符串
  • C++文件上传、下载工具
  • 详解C++编程中对二进制文件的读写操作
  • 解读C++编程的相关文件操作
  • C++实现显示MP3文件信息的方法
  • C++二进制翻转实例分析
  • 深入分析C++中执行多个exe文件方法的批处理代码介绍
  • c++ 一个二进制串转化为整数的解决方法
  • C++文件依存关系介绍

相关文章

  • 2017-05-28C++条件及循环语句的综合运用实例
  • 2017-05-28C++如何实现广义表详解
  • 2017-05-28C++删除指定文件夹下N天及之前日志文件的方法
  • 2017-05-28C++中判断成员函数是否重写
  • 2017-05-28数组和指针的区别深入剖析
  • 2017-05-28c++实现逐行读取配置文件写入内存的示例
  • 2017-05-28C++编程中new运算符的使用学习教程
  • 2017-05-28基于C++语言实现机动车违章处罚管理系统
  • 2017-05-28全局静态存储区、堆区和栈区深入剖析
  • 2017-05-28C语言 枚举类型(Enum)详解及示例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言中的链接编写教程
    • C语言实现字符转unix时间戳的简单实例
    • C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法
    • 从汇编看c++中默认构造函数的使用分析
    • c++非变易算法-stl算法
    • 深入理解strcpy与memcpy的区别
    • C++设置事件通知线程工作的方法
    • C语言演示对归并排序算法的优化实现
    • 异步http listener 完全并发处理惩罚http恳求的小例子
    • C语言中的隐式函数声明

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有