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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM马明宇 中级黑马   /  2013-3-10 20:37  /  1838 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以前也学过java,但是对进制接触很少,现在又回过头来苦逼的学进制。看视频的时候有一个疑问,为什么负数的二进制是正数的二进制取反再加1呢?跟10进制有什么联系么?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 鼓励鼓励

查看全部评分

4 个回复

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
不管什么数,在计算机上存储都是以二进制的形式存在的。
只不过最高位用来表示符号的,如最高位为了1表示该数为负数,反之为正数
因为二进制对于人来说不够直观,我们会通过某些方法把这些数据转为我们较
为容易识别的十进制形式,底还是以二进制的形式存在及运算的

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
这就是补码计算的公式啊,第一位为标示位,用来标示正负的,公式是这样的
如果x为整数,那么-x就是2^(n-1)+x。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 张子凯 于 2013-3-11 08:30 编辑

        计算机负数之所以采用反码是因为计算机只能计算加法,将负数用反码表示就能利用加法算减法。
        为了理解补码表示法,首先要了解模和同余的概念。
        模式之一个计量器的容量,可以用M表示。一个4位的二进制计数器,当计数器从0到15后,再加1,计数器又变回0.这个计数器的容量是M=2^4=16,即模为16.
        同余概念是指两个整数A和B除以同一正整数M,所得余数相同,则称A和B对M同余,即A和B在以M为模时是相等的,可以写作A=B( mod M)。
        利用模和同余概念的补码表示法在进行算术运算时可以使减法运算化为加法运算,从而简化机器的电路。
        举个例子:假设时钟现在是8点,正确的时间是6点,这时调准时钟的方法有两种:
        1,将分针倒着转2圈(即倒拨时钟2小时),8-2=6(做减法)。
        2,将分钟正着转10圈(时钟正拨10小时),8+10=6( mod 12),这是做加法。
        此时        8-2=8+10(mod 12)
        设:    A=-2     B=10
        则         10/12=(12-2)/12=1+(-2)/12
        故-2和10同余。同余的两个数具有互补关系,-2与10对模12互补,也可以说-2的部署是10(以12为模)
        可见,只要确定了模,就可以找到一个附属等价的整数(该整数即为负数的补数),来代替此负数,而这个整数可以用模加上负数本身求得,这样就可以把减法运算利用加法实现了。D:\My Documents\My Pictures\补码.bmp

补码.JPG (27.09 KB, 下载次数: 122)

补码.JPG

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

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