负128为什么没有源码(负127的原码)
本文目录一览:
- 1、什么么负128有补码??? 没原码 反码 要补码做什么??? 为什么要这么 规定???
- 2、-128的原码有没有
- 3、怎么理解-128的原码是 1000 0000 ,补码也是1000 0000 。
什么么负128有补码??? 没原码 反码 要补码做什么??? 为什么要这么 规定???
推断-128的原码和补码(用补码=
反码+1)
1.关于原码1000
0000,表示的是-0,还是-128呢?(答案是-128而不是-0)
1.先看看原码的概念吧:正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值
2.0是负数吗?0既不是正数也不是负数,那么它的符号位到底是0还是1呢?(0的符号位为0,不能为1)
3.看看负数补码的公式:负数的补码=10000
0000(模)-数的绝对值
比如:-1
1111
1111
=10000
0000-0000
0001
-2
1111
1110
=10000
0000-0000
0010
现在假设-0为负数,那么
-0的补码应该是10000
0000
-
0(这个0,姑且教0的绝对值吧)=0000
0000
反码:1111
1111(0000
0000
-1=0000
0000
+1111
1111=1111
1111)
原码:1000
0000
现在来推-128
-128的补码:10000
0000
-
1000
0000(+128没有符号位)=1000
0000
反码:1111
1111(1000
0000
-1=1000
0000+1111
1111=1111
1111)(补码-1)
原码:1000
0000(反码取反)
从上面看来,一个原码对应了2个补码
但是仔细分析:原码的概念,负数的符号位为1,但是0不是负数,所以不能用此公式
0也不是正数,但是可以把0定义为原码、反码和补码都一样(即0000
0000)
而且据说可以推断出0的补码只有一个(有兴趣的
可以去推一下,呵呵)
现在原码1000
0000就唯一表示-128了,而不会表示出-0,因为-0不能用这个公式计算
现在,补码1000
0000的原码是1000
0000(已证明),那么原码1000
0000的补码是1000
0000吗?
原码
1000
0000
(-128,进位被舍去)
反码
1111
1111
补码
1000
0000(1111
1111(反码)
+
1=1000
0000,这里实际上真正相加的是1111
1111后面的7位,
第1位是符号位始终不会变,所以,当进到第8位的时候,就表示溢出了,会被舍弃)
2.综上所述:1.-128的补码和原码一样都是1000
0000,
2.0的原码、反码和补码都一样(即0000
0000)
3.如果把-0当做负数,1000
0000就会有歧义(事实上0的补码只有一个0000
0000)
-128的原码有没有
原码,在计算机里面是不存在的。
研究原码干什么?
原码的范围:-127~+127,其中含有两个零。
原码没有用的。
输入到计算机里面,都是使用补码。
原码只是写在纸上,其功能,也就是来求补码。
但是,-128,还并不是用原码求出来的。
参考一下:
怎么理解-128的原码是 1000 0000 ,补码也是1000 0000 。
怎么理解 128 的原码是 1000 0000 ,补码也是 1000 0000。
另外, -127 的原码是 1111 1111 , 为什么 -128 就成了 1000 0000
------------------
在码长八位时,-128 并没有原码反码,只有补码:1000 0000。
求-128 的补码,取反加一,是不好用的。
必须用“补码的定义式”才能求出-128 的补码。
定义式如下:
负数的补码 = 2^n -| 负数 | = 256 + 对应的正数。
零和正数,不用变,直接参加计算。