69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include "stdafx.h"
#include <string.h>
char *BinToStr(char *, int);
int BinToInt (char *);
int main(void)
{
int nNum1, nNum2;
char lpszBinStr[sizeof(int) * 8 + 1];
char lpszBin[2][33];
gets(lpszBin[0]);
gets(lpszBin[1]);
nNum1 = BinToInt(lpszBin[0]);
nNum2 = BinToInt(lpszBin[1]);
printf("~Number1 :%s \n", BinToStr(lpszBinStr, ~nNum1));
printf("~Number2 :%s \n", BinToStr(lpszBinStr, ~nNum2));
printf("Number1&Number : %s\n", BinToStr(lpszBinStr, nNum1&nNum2)); //这三条条语句打印出来为空。。。为什么??
printf("Number1|Number : %s\n", BinToStr(lpszBinStr, nNum1|nNum2));
printf("Number1^Number : %s\n", BinToStr(lpszBinStr, nNum1^nNum2));
return 0;
}
int BinToInt (char *lpszBin) // 将输入的二进制码转化为数字
{
int nSum = lpszBin[strlen(lpszBin) -1] - '0';
int nSubSum = 1;
int cNum, cNum1, cCount;
for (cNum = strlen(lpszBin)-2, cCount = 0; cNum>=0; cNum--, cCount++)
{
for (cNum1 = 0; cNum1 <= cCount; cNum1++)
{
nSubSum *= 2;
}
nSum += (lpszBin[cNum]-'0') * nSubSum;
nSubSum = 1;
}
//printf("%d \n", nSum);
return nSum;
}
char *BinToStr(char *lpszBinString, int nNum) //讲数字转化为2进制码
{
int cNum;
int nMark = 01;
int nSize = sizeof(int) * 8;
for (cNum = nSize-1; cNum >= 0; cNum--)
{
lpszBinString[cNum] = nNum & nMark + '0';
nNum >>= 1;
}
lpszBinString[nSize] = '\0';
return lpszBinString;
}
char *BinToStr(char *lpszBinString, int nNum) //讲数字转化为2进制码
{
int cNum;
int nMark = 01;
int nSize = sizeof(int) * 8;
for (cNum = nSize-1; cNum >= 0; cNum--)
{
lpszBinString[cNum] = (nNum & nMark) + '0';//这样修改
nNum >>= 1;
}
lpszBinString[nSize] = '\0';
return lpszBinString;
}
char *BinToStr(char *lpszBinString, int nNum) //讲数字转化为2进制码
{
int cNum;
int nMark = 01;
int nSize = sizeof(int) * 8;
for (cNum = nSize-1; cNum >= 0; cNum--)
{
lpszBinString[cNum] = nNum & nMark + '0';//改成lpszBinString[cNum] = (nNum & nMark) + '0';
nNum >>= 1;
}
lpszBinString[nSize] = '\0';
return lpszBinString;
}