A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王春祥 中级黑马   /  2012-3-10 21:07  /  2772 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于负数的二进制转换成十进制,我想如果明白了-20>>3=-3是怎么回事就清楚了
正负数的二进制转换执行求补运算(取反加1)
负数二进制转换为十进制即先求补得对应正数再加个负号
             20                       0000-0000 0000-0000 0000-0000 0001-0100
          取反                       1111-1111 1111-1111 1111-1111 1110-1011
           加1                        1111-1111 1111-1111 1111-1111 1110-1100      —— -20的二进制表现形式
           移位                      111  1111-1111 1111-1111 1111-1111 1110-1  100
                                        1111-1111 1111-1111 1111-1111 1111-1101      ——接下来转换为十进制
         取反加1后               0000-0000 0000-0000 0000-0000 0000-0011      ——就是3
         加上负号即-3

5 个回复

倒序浏览
一个负数的二进制表现形式就是这个负数忽略符号的正数对应的二进制取反再加一。
计算机中存储的二进制数最高位是0则是正数,是1则是负数。
回复 使用道具 举报
那存储的二进制数是不是有符号数是人为根据情况去定义的吗
计算~6
000...0110 取反111...1001,为啥不把111...1001直接当个正数做结果,而是当成个负数的二进制呢
有点乱了
回复 使用道具 举报
按位取反再加1,就是了

建议去看看微机原理这本书中的 编码,其中,反码 补码等,都有详细介绍的哦!
回复 使用道具 举报
嗯,谢谢,正在看,比较纠结一个二进制数什么时候有符号,什么时候是无符号数
回复 使用道具 举报
王春祥 发表于 2012-3-10 22:25
嗯,谢谢,正在看,比较纠结一个二进制数什么时候有符号,什么时候是无符号数 ...

2进制只是个最底层的表现形式 本身没有负数的概念, 具体关于数值可以是有负数的,计算机专门用补码来标示而已, 比如整形是4个字节也就是32位要拿去最高位作为正符标示位数,
那么整数的范围正是0000000000000000-01111111111111111;剩余的就是负数范围即1000000000000000 11111111111111111。

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马