首页 热点专区 义务教育 高等教育 出国留学 考研考公

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

发布网友

我来回答

3个回答

热心网友

计算机中的整数是用补码存储的,最高位为符号位,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++0+0+8+4+0+1
=77
加上符号,最终的十进制值就是-77。
即B10110011 表示的十进制值为-77。

热心网友

取补码——标志位置0——用正数的方法求——最后结果前加符号追问我是先把输入的十进制数转为二进制的,然后会去掉二进制码的随机一位,然后得到的这个新的二进制码,我想把它再转为十进制的,整数的前面都是0可以做到,但是负数前面全是1,我不知道该怎么办了,我想问的就是这个%>_<%

追答把代码贴上来

热心网友

原码反码还是补码啊追问正数的反码+1了,应该是补码了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com