无符号二进制处理方式
有符号二进制处理方式
实现代码
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <process.h>
#include <malloc.h>
#include <math.h>
WORD Func_16_to_bin(const char* szBin);
int main()
{
WORD nResult = Func_16_to_bin("1111001100010100");
printf("%d\n", nResult);
system("pause");
return 0;
}
WORD Func_16_to_bin(const char* szBin)
{
WORD dwResult = NULL;
char* szResult =(char*) malloc(17);
if (!szResult || !szBin ||16 != strlen(szBin))
return dwResult;
RtlZeroMemory(szResult, 17);
if (*szBin == '0')
{
//无符号整数
for (size_t i=16,l=0;i>0;i--,l++)
{
if (szBin[l] == '1')
dwResult += (int)1 * pow(2, i - 1);
}
}
else
{
//有符号整数 求补码
for (int i =0;i<16;i++)
{
if (szBin[i]=='1')
{
szResult[i] = '0';
}
else
{
szResult[i] = '1';
}
}
//无符号整数
for (int i = 16, l = 0; i > 0; i--, l++)
{
if (szResult[l] == '1')
dwResult += (int)1 * pow(2, i - 1);
}
dwResult = ~dwResult;
}
free(szResult);
szResult = NULL;
return dwResult;
}