好多年没更新了,工作后的第一个更新。
言归正传,前几天碰上一个小问题,简单地说就是将核对给机械臂的发的运动指令是否正确,但指令码是16进制补码,看得云里雾里,用自带的计算器发现,并没有将负数的补码转成10进制的指令,因此,就写了一个简单的转换程序,代码如下:
// 计算一个16进制补码表示的整数对应的十进制数
#include <tchar.h>
#include <cmath>
#include <iostream>
#define MAXCHAR 9
#define MAXDIGIT 8
using namespace std;
int HexChar2Digit(char NumInComplement[], int NumDigit[], int charsize);
// 主函数
int _tmain(int argc, _TCHAR* argv[])
{
int bitnum = 0, charsize = 16;
int isNegNum = 0;
int i, numbase;
long long resultInDec = 0;
char NumInComplement[MAXCHAR];
int NumDigit[MAXDIGIT];
cout << "输入计算的位数(8位,16位,32位):" << endl;
cin >> bitnum;
charsize = bitnum / 4;
// 清空缓存区
cin.clear();
cin.ignore(numeric_limits<std::streamsize>::max(), '\n');
cout << "输入16进制表示的补码(输入 'q'