#include <cstdio>
#include <cstdlib>
#include <cstring>
int btod(char *bstr);
int dtob(int d, char *bstr);
int main(int argc, char **argv)
{
char bstr[64] ="";
memset(bstr,0,sizeof(bstr));
int d = 0;
// printf("输入二进制数: ");
//scanf("%s", bstr);
//if ((d = btod(bstr)) < 0)
// printf("error!\n");
//else
// printf("二进制 %s 转十进制为 %d\n", bstr, d);
d = 0;
//bzero(bstr, sizeof(bstr));
memset(bstr,0,sizeof(bstr));
printf("十进制数: ");
scanf("%d", &d);
int j = d;
if ((dtob(d, bstr)) < 0)
printf("ÊäÈëÓÐÎó\n");
else
printf("十进制 %d 转二进制为 %s\n", d, bstr);
//x >> (k-1) & 1
printf("%d\n",(j >>0&1));
printf("%d\n",(j >>1&1));
printf("%d\n",(j >>2&1));
printf("%d\n",(j >>3&1));
printf("%d\n",(j >>4&1));
return 0;
}
int btod(char *bstr)
{
int d = 0;
unsigned int len = strlen(bstr);
if (len > 32)
return -1;
len--;
int i = 0;
for (i = 0; i <= len; i++)
{
d += (bstr[i] - '0') * (1 << (len - i));
}
return d;
}
int dtob(int d, char *bstr)
{
if (d < 0)
return -1;
int mod = 0;
char tmpstr[64] ="";
memset(tmpstr,0,sizeof(tmpstr));
memset(bstr,0,sizeof(bstr));
int i = 0;
while (d > 0)
{
mod = d % 2;
d /= 2;
tmpstr[i] = mod + '0';
i++;
}
unsigned int len = strlen(tmpstr);
for (i = 0; i < len; i++)
{
bstr[i] = tmpstr[len - i - 1];
}
return (int)len;
}
#include <cstdlib>
#include <cstring>
int btod(char *bstr);
int dtob(int d, char *bstr);
int main(int argc, char **argv)
{
char bstr[64] ="";
memset(bstr,0,sizeof(bstr));
int d = 0;
// printf("输入二进制数: ");
//scanf("%s", bstr);
//if ((d = btod(bstr)) < 0)
// printf("error!\n");
//else
// printf("二进制 %s 转十进制为 %d\n", bstr, d);
d = 0;
//bzero(bstr, sizeof(bstr));
memset(bstr,0,sizeof(bstr));
printf("十进制数: ");
scanf("%d", &d);
int j = d;
if ((dtob(d, bstr)) < 0)
printf("ÊäÈëÓÐÎó\n");
else
printf("十进制 %d 转二进制为 %s\n", d, bstr);
//x >> (k-1) & 1
printf("%d\n",(j >>0&1));
printf("%d\n",(j >>1&1));
printf("%d\n",(j >>2&1));
printf("%d\n",(j >>3&1));
printf("%d\n",(j >>4&1));
return 0;
}
int btod(char *bstr)
{
int d = 0;
unsigned int len = strlen(bstr);
if (len > 32)
return -1;
len--;
int i = 0;
for (i = 0; i <= len; i++)
{
d += (bstr[i] - '0') * (1 << (len - i));
}
return d;
}
int dtob(int d, char *bstr)
{
if (d < 0)
return -1;
int mod = 0;
char tmpstr[64] ="";
memset(tmpstr,0,sizeof(tmpstr));
memset(bstr,0,sizeof(bstr));
int i = 0;
while (d > 0)
{
mod = d % 2;
d /= 2;
tmpstr[i] = mod + '0';
i++;
}
unsigned int len = strlen(tmpstr);
for (i = 0; i < len; i++)
{
bstr[i] = tmpstr[len - i - 1];
}
return (int)len;
}