符号位的二进制转换成十进制

yilin54 2009-10-27 05:13:12
有符号位的二进制数:1000 0000 转换成十进制数是 -128,能详细的一步一步告诉下是怎么得出来的吗?
...全文
435 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbshmily 2009-10-27
  • 打赏
  • 举报
回复
楼上已有答案
yilin54 2009-10-27
  • 打赏
  • 举报
回复
做法1:
有符号整数是以补码形式存储的。
(1)正数的补码:与原码相同。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。

1000 0000 符号位为1是负数
1000 0000 先减1 为0111 1111,然后取反 为1000 0000 就是该数的绝对值 是128
所以它的值为-128

和做法2:
1: 表示负号;

后面的000 0000:7位数值,再求反加一即可得到原码。

求反可得: 111 1111
加一可得:1000 0000
原码就是:128

有什么区别吗?
yilin54 2009-10-27
  • 打赏
  • 举报
回复
你的这中做法和

1: 表示负号;

后面的000 0000:7位数值,再求反加一即可得到原码。

求反可得: 111 1111
加一可得:1000 0000
原码就是:128

这个做法,是一样的吗? 有什么区别呀。我很奇怪啊




[Quote=引用楼主 yilin54 的回复:]
有符号位的二进制数:1000 0000 转换成十进制数是 -128,能详细的一步一步告诉下是怎么得出来的吗?
[/Quote]
菜鸟二号 2009-10-27
  • 打赏
  • 举报
回复
首位表示符号,1表示为-,0则表明为正,然后转换10进制,2^n
selooloo 2009-10-27
  • 打赏
  • 举报
回复
有符号整数是以补码形式存储的。
(1)正数的补码:与原码相同。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。

1000 0000 符号位为1是负数
1000 0000 先减1 为0111 1111,然后取反 为1000 0000 就是该数的绝对值 是128
所以它的值为-128

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧