C语言中,负数的二进制码怎么转换为十进制?

2026年09月24日 14:56
有1个网友回答
网友(1):

计算机中的整数是用补码存储的,最高位为符号位,C语言也遵从同样的规则。\x0d\x0a如果最高位为0则为正数,求值的时候,直接转为10进制即可。\x0d\x0a最高位如果为1代表为负数,求值的时候,需要先把二进制的值按位取反,然后加1得到负数绝对值(相反数)的二进制码,然后转为10进制,加上负号即可。\x0d\x0a\x0d\x0a以char型为例,char占一个字节,即8位。\x0d\x0a对于二进制值B10110011转换十进制过程为:\x0d\x0a先取反,即1变0,0变1,得到:\x0d\x0aB01001100\x0d\x0a再加1:\x0d\x0aB01001101\x0d\x0a转为十进制,即按照每位的权值乘上对应位的值,结果相加即可。\x0d\x0a十进制值=0*2^7+1*2^6+0*2^5+0*2^4+1*2^3+1*2^2+0*2^1+1*2^0\x0d\x0a=0+64+0+0+8+4+0+1\x0d\x0a=77\x0d\x0a加上符号,最终的十进制值就是-77。\x0d\x0a即B10110011表示的十进制值为-77。