二进制转十进制的题:(11110)2=1*24+1*23+1*22+1*21+0*20=16+8+4+2+0=(30)10请问“16+8+4+2+0”是怎么得来的?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 02:55:17

二进制转十进制的题:(11110)2=1*24+1*23+1*22+1*21+0*20=16+8+4+2+0=(30)10请问“16+8+4+2+0”是怎么得来的?
二进制转十进制的题:(11110)2=1*24+1*23+1*22+1*21+0*20=16+8+4+2+0=(30)10
请问“16+8+4+2+0”是怎么得来的?

二进制转十进制的题:(11110)2=1*24+1*23+1*22+1*21+0*20=16+8+4+2+0=(30)10请问“16+8+4+2+0”是怎么得来的?
11110
假设是字符类型char,占据内存的一个字节Byte,即8位Bit
00011110
分别为0~255或者-128~127
我们按照0~255吧,则有:
128+64+32+16+8+4+2+1=255
将你疑惑的二进制补充完整:
00011110
0(128) 0(64) 0(32) 1(16) 1(8) 1(4) 1(2) 0(1)
所以有1的对应十进制数字相加,则:16+8+4+2=30
仔细看它们,得到规律如下:1等于2的0次方
1=2^0
2=2^1
4=2^2
8=2^3
16=2^4
32=2^5
64=2^6
128=2^7
. . .
所以嘛,你在自己好好思考一下,祝您好运,
#include
int main(){
int num=0;
int bit_num=sizeof(num)*8;
char bin[bit_num];
//unsigned char fn=0;//i2b.c:15: 警告:由于数据类型范围限制,比较结果永远为真
short fn=0;
printf("十进制:");
scanf("%d",&num);
printf("二进制:");
for (fn=1;fn>=1;
}
for (fn=bit_num-1;fn>=0;fn--){
printf("%d",bin[fn]);
if (!(fn%4)){
printf(" ");
}
}
printf("\n");
return 0;
}