C语言把数据按位进行逆序排列
(2014-10-16 21:27:10)
标签:
it |
分类: 程序设计 |
通过RS-32接口进行的串行通信,通常是按照低位在前、高位在后的顺序依次发送一个数据字节的各位。但是,有一些串行接口器件却刚好相反,要求数据字节按照高位在前、低位在后的顺序输入输出。为了在控制系统中与这些器件配合工作,只能利用软件的方法在主控器件将每个数据项按位进行逆序排列,即从D7D6D5D4D3D2D1D0的形式位变成D0D1D2D3D4D5D6D7的形式,然后再写入到接口器件。
在数字加密通信中,这种算法也可以用来进行加密与解密,与“异或”运算配合,以加大被破解的难度。
在汇编语言程序中,利用移位和循环移位指令,可以很方便地实现按位逆序排列,例如下面就是利用8086指令系统写出的按位逆序程序。
N1:
在C语言程序中,虽然可以利用某些C编译系统中提供的移位命令(如Keil中的_RCR_等),但它们往往是一些“方言土语”,不是“标准普通话”,换个环境就可能无法使用了。
其实,利用标准ANSI C语言编译器提供的基本功能,也能实现同样的目的。本人编写的按位逆序排列程序可以读出数据文件data1.txt中的内容,逐个字节进行按位逆序处理,然后把处理结果写入data2.txt文件中,同时将变换前后的数据项在同一行上并列显示。
输入数据:
已在指定路径下保存的数据文件data1.txt。
输出数据:
保存到相同路径下的数据文件data2.txt。
样例输入:
Please input filename:
样例输出:
说明:输入输出时使用的都是十进制计数方式。
十进制数33的二进制代码是00100001B,132的二进制代码是10000100B。
程序代码如下:
#include
unsigned char reverse(unsigned char ch)
{
}
int main()
{
}

加载中…