JAVA中,2进制的负数表达形式

来源:互联网 发布:网络喷子无脑 编辑:程序博客网 时间:2024/05/07 01:21

 

 

 

结果为:

5=101

-5=11111111111111111111111111111011

 

101之所以前面没有东西,因为前面都是0,所以隐蔽掉了

                           

原因:

在计算机中都是用负数的绝对值—>取反—>+1(补码),作为这个-5在计算机中的表示!

 

比如说:

              -5的绝对值-->5

              5二进制—>00000000000000000000000000000101

              取反—>11111111111111111111111111111010

      最后加上1

             11111111111111111111111111111010

            + 00000000000000000000000000000001  1

            =11111111111111111111111111111011  (表示-5

 

补充:

 

正数的原码,补码,反码都是相同的

 

在计算机中,你比如说看到某个2进制首位是0.则表示是正数。。1表示为负数

 

比如说我们知道在javabyte类型表示的是8

-->0000000011111111

 

我们可以把它拆成:

100000000-011111111   210000000-11111111

 

首先我们看第一个:

    00000000-011111111由于首位是0,因此计算机知道这个是正数

    所以转换成十进制是:0-127

再看第二个:

    10000000-11111111  由于首位是1,所以我们知道这个是负数(用补码来表示)

    首先看10000000,我们先取反:

100000002)-->01111111

    然后再加上1:

    01111111+01111111=10000001

    其次装换成10进制:

    1000001(2)-->128(10)

    最后转换成为负数:

    所以结果为-128

    因此Byte是由-128-->127

 

二进制加法:                                            

  1+0=11+1=10 ; 1+10=11 ;10+10=100 ; 1+11=100 ; 10+11=101;

二进制减法:                               

  000 ; 101 ;01=1 ;110;1011

 

 

原创粉丝点击