负数的二进制转换

走幸福签约 4个月前 已收到1个回答 举报

涐臭臭老公 4星

共回答了465个问题采纳率:98.4% 评论

计算机中的整数是用补码存储的,最高位为符号位,C语言也遵从同样的规则。如果最高位为0则为正数,求值的时候,直接转为10进制即可。

最高位如果为1代表为负数,求值的时候,需要先把二进制的值按位取反,然后加1得到负数绝对值(相反数)的二进制码,然后转为10进制,加上负号即可。

以char型为例,char占一个字节,即8位。对于二进制值B10110011转换十进制过程为:先取反,即1变0,0变1,得到:B0100 1100再加1:B0100 1101转为十进制,即按照每位的权值乘上对应位的值,结果相加即可。十进制值=0*2^7 + 1*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0=0+64+0+0+8+4+0+1=77加上符号,最终的十进制值就是-77。即B10110011 表示的十进制值为-77。

17小时前

14
可能相似的问题

热门问题推荐

Copyright © 2024 微短问答 All rights reserved. 粤ICP备2021119249号 站务邮箱 service@wdace.com