精华内容
下载资源
问答
  • 二进制里,是用 0 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。  以负数-5为例:  >1.先将-5的绝对值转换成二进制,即为0000 0101;  >2.然后求...

    计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码, 补码=反码+1。在 二进制里,是用 0 和 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。
      以负数-5为例:
      >1.先将-5的绝对值转换成二进制,即为0000 0101;
      >2.然后求该二进制的反码,即为 1111 1010;
      >3.最后将反码加1,即为:1111 1011
      
    更多见java中表示二进制、八进制、十进制、十六进制

    展开全文
  • 二进制中负数的表示

    千次阅读 2017-03-18 18:11:31
    二进制里,是用 0 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。   原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 比如 00000000 00000000 00000000 ...

    计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码, 补码=反码+1。

    在 二进制里,是用 0 和 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。

     

    原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

    比如 00000000 00000000 00000000 00000101 是 5的 原码。
     

    反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

    取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)。

    比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。

    称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。

    反码是相互的,所以也可称:

    11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
     

    补码:反码加1称为补码。

    也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

    比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。

    那么,补码为:

    11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

     

                   在计算机中,负数以其正值的补码形式表达。

    所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。


    原文地址:

    http://blog.csdn.net/garybrother/article/details/5991918

    http://blog.csdn.net/zlqqhs/article/details/8670509

    展开全文
  • 二进制中正负数表示判断

    千次阅读 2017-03-07 22:32:50
    二进制中第一位0代表正;1代表负我知道,但是给你一个二进制的数比如101 那么转化成十进制应该是多少?...如果你有这种疑问,那就是没有高清概念有问题,我们只有在说计算机处理数时,会用0和1代表正负,这种数
    二进制中第一位0代表正;1代表负我知道,但是给你一个二进制的数比如101 那么转化成十进制应该是多少? 5?  但不是说首位为1应该是负的吗??? 

    谁能给我讲讲这个首位什么时候作为符号,什么时候作为数字去计算?什么时候可以直接计算,什么时候需要取反?我怎么知道它是正数还是负数?  


    如果你有这种疑问,那就是没有高清概念有问题,我们只有在说计算机处理数时,会用0和1代表正负,这种数称之为机器数(包括原码,反码,补码);  


    一:表示法: 
    1、正数5的表示法 

    假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为: 

    00000000  00000000  00000000  00000101 

    5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。  


    2、负数-5的表示法 

    现在想知道,-5在计算机中如何表示?在计算机中,负数以原码的补码形式表达。  



    二、概念: 
    1、原码:一个正数,按照绝对值大小转换成的二进制数;一个负数按照绝对值大小转换成的二进制数,然后最高位补1,称为原码。 

    比如 00000000  00000000  00000000  00000101 是 5的 原码。     

     10000000  00000000  00000000  00000101 是 -5的 原码。  

    备注: 比如byte类型,用2^8来表示无符号整数的话,是0 - 255了;如果有符号,最高位表示符号位,0为正,1为负,那么,正常的理解就是 -127 至 +127 了.这就是原码了,值得一提的是,原码的弱点,有2个0,即+0和-0(10000000和00000000);还有就是,进行异号相加或同号相减时,比较笨蛋,先要判断2个数的绝对值大小,然后进行加减操作,最后运算结果的符号还要与大的符号相同;于是,反码产生了。  


    2、反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反[每一位取反(除符号位)]。 
    取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)  
    比如:      正数00000000  00000000  00000000  00000101   

    其反码还是 00000000  00000000  00000000  00000101              


    负数10000000  00000000  00000000  00000101   

    其反码则是 11111111  11111111  11111111  11111010。  


    反码是相互的,所以也可称:10000000 00000000 00000000 00000101  
    和 11111111 11111111 11111111 11111010互为反码。 
    备注:还是有+0和-0,没过多久,反码就成为了过滤产物,也就是,后来补码出现了。  

    3、补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1. 
    比如:         10000000  00000000  00000000  00000101  
    的反码是:11111111  11111111  11111111  11111010。 那么,补码为:11111111  11111111  11111111  11111010 + 1  
    等于 11111111  11111111  11111111  11111011 
     
    备注:1、从补码求原码的方法跟原码求补码是一样的 ,也可以通过完全逆运算来做,先减1,再取反。 
            2、补码却规定0没有正负之分  
    所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。 
    转换为十六进制:0xFFFFFFFB。 
     
    三、再举一例 

    我们来看整数-1在计算机中如何表示。假设这也是一个int类型,那么: 

    1、先取-1的原码:10000000  00000000  00000000  00000001 

    2、得反码:      11111111  11111111  11111111  11111110(除符号位按位取反) 

    3、得补码:      11111111  11111111  11111111  11111111  

    可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF  


    四、主要知识点:  
    正数的反码和补码都与原码相同。 
    负数的反码为对该数的原码除符号位外各位取反。 
    负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1  

    源码:优点在于换算简单 缺点在于两个零 加减法需要独立运算 

    反码:优点在于表示清晰 缺点在于两个零 加减法同样需要独立运算 

    补码:优点在于一个零 范围大  减法可以转为加法 缺点在于理解困难  


    下面是书上原文:  
    原码表示法规定:用符号位和数值表示带符号数,正数的符号位用“0”表示,负数的符号位用“1”表示,数值部分用二进制形式表示。 反码表示法规定:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。 补码表示法规定:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1. 

    正零和负零的补码相同,[+0]补=[-0]补=0000 0000B


    五、特殊情况-128 
    1000 0000,那么,它的原码是什么呢?从补码求原码的方法跟原码求补码是一样的。先保留符号位其它求反:  1111 1111, 再加1,11000 0000, 超过了8位了。对,用8位数的原码在这里已经无法表示了。  
    那么,回到原码处, 它的原码也是 1000 0000(超出的自动丢失),1000 0000 在原码表示什么呢? -0, 但补码却规定0没有正负之分。 


    转换一下思路,看看计算机里,是怎么运算的: 

    对于负数,先取绝对值,然后求反,加一 

    -128 -> 128 -> 1000 0000 -> 0111 1111 -> 1000 0000 
    现在明确了吧 
    所以, 8位有符号的整数取值范围的补码表示 1000 0000 到 0000 0000, 再到 0111 1111 即 -128 到 0, 再到 127 最终 -128 ~ +127  


    永远记住:程序里的加减法对 二进制是永远有效的。但是并不一定适合于真实世界。  
    byte m = -128; byte q = 1; 
    byte p = (byte)(m - q); //这一步其实编译器会报错,其实是发现越界了,我们强行转化为byte就可以看出结果。 
    System.out.println( p); p的结果为:127

    展开全文
  • 二进制里,是用0和1来表示正负的,最高位为符号位,最高位为1代表负数,最高位为0代表正数。 对于负数而言,是以补码的形式存储在内存的。以-8(int)为例, 第一步:将-8的绝对值转化为二进制 0000 1000 第二步...

    JAVA中负数的二进制表示

    计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码,反码=原码按位取反 补码=反码+1。

    在二进制里,是用0和1来表示正负的,最高位为符号位,最高位为1代表负数,最高位为0代表正数。

    对于负数而言,是以补码的形式存储在内存中的。以-8(int)为例,

    第一步:将-8的绝对值转化为二进制 0000 1000

    第二步:将上面的二进制以反码表示 1111 0001

    第三步:转化为补码 11111111 11111111 11111111 11110010 因为int是四个字节。这个二进制的值可以通过Integer.toBinaryString()来获取。

    展开全文
  • Java负数的二进制表示

    千次阅读 2018-06-23 21:41:19
    在 二进制里,是用 0  1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。 以java8位的byte为例,最大值为:0111 1111,最小值为1000 0001。 那么根据十进制的数字,我们...
  • Java负数的二进制如何计算

    千次阅读 2017-09-30 14:47:15
    二进制里,是用0和1来表示正负的,最高位为符号位,最高位为1代表负数,最高位为0代表正数。 以java8位的byte为例,最大值为:0111 1111,最小值为1000 0001。  那么根据十进制的数字,我们如何转换为...
  • java负数的二进制表示

    千次阅读 2013-09-30 09:38:19
    二进制里,是用0和1来表示正负的,最高位为符号位,最高位为1代表负数,最高位为0代表正数。  以java8位的byte为例,最大值为:0111 1111,最小值为1000 0001。  那么根据十进制的数字,我们如何转换为...
  • 二进制里,是用0和1来表示正负的,最高位为符号位,最高位为1代表负数,最高位为0代表正数。 以java8位的byte为例,最大值为:0111 1111,最小值为1000 0001。 那么根据十进制的数字,我们如何转换为二进制...
  • Java整数转换成二进制

    2014-09-18 17:44:10
    二进制里,是用0和1来表示正负的,最高位为符号位,最高位为1代表负数,最高位为0代表正数。 以java8位的byte为例,最大值为:0111 1111,最小值为1000 0000, 换算成十进制就是127和-128。 那么根据十进制的...
  • 二进制里,是用 0 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。  以java8位的byte为例,最大值为:0111 1111,最小值为1000 0001。  那么根据十进制的数字,我们如何...
  • 二进制的几种编码表示方法

    千次阅读 2013-09-16 17:06:05
    数有正负之分,那么在计算机里怎么表示正负呢,0和1不就刚好吗?呵呵,没错,就是用“0”表示正号,“1”表示负号,符号位放在数的最高位。例如,二进制数X=(+1010100),Y=(-1010100),则他们在机器就存为
  • 我们仍然通过最左侧第一位的 0 1,来判断这个数的正负。但是,我们不再把这一位当成单独的符号位,在剩下几位计算出的十进制前加上正负号,而是在计算整个二进制值的时候,在左侧最高位前面加个负号。eg:1011
  • 计算机就一定要采用二进制吗?

    千次阅读 2011-09-13 00:07:54
    我们都知道,计算机采用二进制有以下几点原因: 1:物理上容易实现。如,高低电平表示,脉冲的正负表示; 2:加减运算规则简单。 3:与逻辑值“01”。 4:容易实现存储,如凹坑,带表1,原本代表0. 5:...
  • 上一节进制数讲了二进制、八进制、十进制和十六进制数...数有正负之分,那么在计算机里怎么表示正负呢,0和1不就刚好吗?呵呵,没错,就是用“0”表示正号,“1”表示负号,符号位放在数的最高位。例如,二进制数X...
  • 本文目标可以使用BigInteger操作大整数可以使用BigDecimal指定小数的保留位数基础知识对于二进制来说,最高位代表正负号,-0表示-128,+0表示032位系统int型4个字节:-(2的31次方) ~ (2的31次方) 减 1最大负数:...
  • 所谓带符号就是带正负号的二进制,这个符号是在二进制的最高位(这是举一个具体的例子),比如二进制八位的+1:0 0000001,从左往右第一位就是符号位,0代表正、1代表负(在移码是相反的)。好了,该讲的都讲了,...
  • 数有正负之分,那么在计算机里怎么表示正负呢,0和1不就刚好吗?呵呵,没错,就是用“0”表示正号,“1”表示负号,符号位放在数的最高位。例如,二进制数X=(+1010100),Y=(-1010100),则他们在机器
  • java左移、右移、无符号右移

    千次阅读 2013-11-11 11:20:39
    二进制里,是用 0 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为0 代表正数。  以java8位的byte为例,最大值为:01111111,最小值为1000 0000。  那么根据十进制的数字,我们如何转换...
  • 十进制转换为二进制 整数:如123转换为...带正负号的叫 真值,不带正负号的叫机器数,机器数中0代表+,1代表- 8421码(是一种十进制编码),由于8421可以代表16种代码,因此其表示10进制时,有6中的可能是冗..
  • 我觉得这是一个非常有意思的...在二进制的情况下,java使用0和1来代表正和负,最高位——左面第一位为1代表负数,最高位为0就代表正数。在32位的int二进制表示里,最高位是预留出来表示正负号的。 我们知道java ...
  • 现实生活,我们通常使用10进制来表示我们的数字,而在计算机使用的是“01”表示数字的二进制。  如果我们用一个字节来存储一个数字,那么这个数字在计算机的存储形式可能是这样的:00010011。最左边的...
  • 原码补码反码的认识

    2019-11-26 15:13:16
    计算机诞生之后,这个简单的机器可以认识二进制0和1的区别。所以人们用一串二进制数比如1101001来表示一些信息。这是最原始的数字,没有正负之分,也叫无符号数。 原码 后来为了展现出正数负数的差别,人们...
  • 二进制的最高位代表正负,正数为0,负数为1。 例如:1:0001 -1:1111 那么为什么-1是这样来表示呢?那就涉及到另一个知识,反码补码。 正数的反码与原码相同。负数的反码是除了符号位外,其余位取反。 正数的补码也...
  • 所以在原码规定了二进制串的最高位用于标识符号位,即0代表正,1代表负。这其实是挺符合我们现实世界人思考方式。为了描述方便,这里我们这针对4位二进制进行分析。 现实世界1在这4位二进制

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

二进制中0和1代表正负