为什么+0和-0的补码都是00000000这是计算所得,还是人为计算机规定?

作者&投稿:笃闻 (若有异议请与网页底部的电邮联系)
为什么+0和-0的补码都是00000000这是计算所得,还是人为计算机规定?~

在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如
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。转换为十六进制:0xfffffffb。
再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000
00000000
00000000
00000001
2、得反码:
11111111
11111111
11111111
11111110
3、得补码:
11111111
11111111
11111111
11111111
可见,-1在计算机里用二进制表达就是全1。16进制为:0xffffff。
128=10000000
按位取反:01111111
加1
:10000000
没有溢出,因为没有别的数用10000000来表示。这都是定义好的,记住就是了

补码的+0和-0不都是一样的嘛

+0 和-0 的补码...----于理不通。
给你一个数,你当然可以求出原码反码补码。
给你一个原码,你还能再求出原码反码补码吗?

0 的原码,有两种形式:0000 0000、1000 0000。
简称+0 和-0。
+0 和-0,这已经是 0 的原码了,你怎么能再求原码的原码?
所以,你只能求 0 的补码。
0 的补码就是 0000 0000。

数和码,你要分清,就不会有这样的问题。

在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如
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。转换为十六进制:0xfffffffb。
再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000
00000000
00000000
00000001
2、得反码:
11111111
11111111
11111111
11111110
3、得补码:
11111111
11111111
11111111
11111111
可见,-1在计算机里用二进制表达就是全1。16进制为:0xffffff。
128=10000000
按位取反:01111111
加1
:10000000
没有溢出,因为没有别的数用10000000来表示。这都是定义好的,记住就是了

人为计算机规定的。

补码 等于 反码 + 1
0 的原码是 0x 0000 0000
因此反码是 0x ffff ffff
你对反码加1,会发现有变成了 0x0000 0000
因此 补码 和原码都是 0x 0000 0000

世界上,本来只有一个零。

原码,却弄了两个码:

 [ +0]原码 = 0000 0000 

 [-0]原码 = 1000 0000

反码,当然也是两个:

 [ +0]反码 = 0000 0000

 [-0]反码 = 1111 1111

补码,反而只有一个,这是什么逻辑呢?

 [ +0]补码 = 0000 0000

 [-0]补码 = 0000 0000,负零的符号位,怎么不是 1 ?

符号位是 0,这不是正数吗? 怎么能表示负零?

专家也无法自圆其说。

取反加一,就是一笔糊涂账!

-128,也没有原码反码, 拿什么取反? 拿什么加一!




已知x=+0.1101和y=-0.1011,用比较法补码一位乘法 求x·y?
x补=1.1011,y补=1.1101 (x·y)补=1.1011*1.1101 数0的补码表示是唯一的 [+0]补=[+0]反=[+0]原=00000000 [ -0]补=11111111+1=00000000

计算机中的数值编码为什么有+0和-0区别是什么?
这样对这一个8位的数的表示法中就有这种现象了: 00000000(-0) 10000000(+0) 但是计算机把这两种都作为0计算。这就是他在形式上的区别,其实在实际操作中是没有什么区别的。计算机用“补码”表示负数。可是有关“补码”的概念一说就得一节课,这一些我们需要在第6章中用一章的篇幅讲2进制的...

为什么常用计算机中+0的反码是0000 0000?
当 X < 0:  [ X ]补码 = X + 2^n, n 是补码的位数。按照定义式,0 和-128 的八位补码,如下:[ 0 ]补码 = 0000 0000。[-128]补码 = -128 + 2^8 = 128 = 1000 0000 (二进制)。如果用“取反加一”,可就难办了。因为,-128 并没有原码和反码,拿什么取反加一!按照...

关于原码,反码,补码的定义(要分正负数,有符号和无符号的),写得详细...
(1000 0000)补=(1111 1111)反+1=(1 0000 0000) 最高位溢出了,符号位现在是0 1000 0000 这个补码比较特殊,代表的是-128.所以n位能表示的范围 -2^(n-1)到2^(n-1)-1 比n位原码能表示的数多个一个(原因没有+0和-0之分了,而-0用别的数表示,所以多一个)。三.原码,反码,补码的...

-0的补码是多少
8位2进制0000 0000

求补码的方法?
求补码分两种情况:一,正数:正整数的补码是其二进制表示,与原码相同。(正整数的原码,补码和反码都一样)二,负数:求负整数的补码,就是将其对应正数二进制表示所有位取反然后加1,0变1,1变0,符号位为1不变。同一个数值在不同的系统中表示的形式是不一样的,这是因为可以分成8位二进制...

关于原码,反码,补码的定义(要分正负数,有符号和无符号的),写得详细...
在原码表示法中,对0有两种表示形式:〔+0〕原=00000000[-0] 原=10000000(2)补码表示法 机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作〔X〕补。例...

为什么补码中0只有一种表示方法?
因为补码的正零与负零表示方法相同。补码一共有三个特性,除了补码的正零与负零表示方法相同外,一个负整数(或原码)与其补数(或补码)相加,和为模为补码的第二个特性,第三个特性是则是,对一个整数的补码再求补码,等于该整数自身。小数的补码则是一种很简单的方式,符号位保持1不变,数值位...

求二进制小数的补码 (0.1011和-0.0101)要过程哦~
0.1011为正数,补码与原码真值一致。仍为0.1011。-0.0101为负数,补码为1.1011。负数补码求法:一种简单的方式,符号位保持1不变,数值位从右边数第一个1及其右边的0保持不变,左边安位取反。另外一种方法,数值位按位取反,末位加1,符号位保持不变。--- 对你的新问题…补充回答下:因为补码...

负数(二进制)的补码公式是?
就是1111111111110001。以下都使用8位2进制来表示。例子:求-5的补码,过程如下:-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011),所以-5的补码是11111011。数0的补码表示是唯一的。[+0]补=[+0]反=[+0]原=00000000;[ -0]补=11111111+1=00000000。

龙江县19642423540: 在原码表示中,为什么+0的原码为00000除了符号0,后面还有4个0,而不是有5、8.个呢?而且为什么+0与 - 0的补码都是00000呢?机器字长又是什么? -
纵凤白花:[答案] 1.二进制表示用多少个0或1是取决于机器字长的;机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数.说白了就类似吞吐量~要是8bits的,那一次就能处理8位~所以后面有几个0(1)是取决于机器字长的~2.正数的补...

龙江县19642423540: 补码的范围 - 0的补码是?10000000还是00000000? - 128是指10000000吗?若 - 0和+0的补码都是00000000那么机器是怎么识别 - 128的呢? -
纵凤白花:[答案] 数字,可以变成码(原、反、补). 数字,只有:负数、零、正数.这里面,并没有 -0、+0. -128 的补码,是按照《补码定义式》做出来的. 因为,在八位的条件下,-128,并没有原码和反码,所以,求反加一,不适用.

龙江县19642423540: 负0的原码为什么负0的补码 -
纵凤白花: 对于负数 补码=原码取反+1 原码=补码-1后取反原码为-0 ,也就是10 -为符号位用1表示 ,取反后是01 01再加1是10, 1为符号位 也就是-0

龙江县19642423540: 11位补码可表示的整数范围是 ~1023.我算出来是 - 1023~1023. 答案是 - 1024~1023. -
纵凤白花: 这是因为+0的补码跟-0的补码虽然不一样,但是代表的都是0,这样就浪费了一个存储空间. +0的补码是其本身,就是00000000 -0的补码是其反码加1,-0的反码是11111111,所以-0的补码是11111111加1,也就是00000000. 所以如果是8位的,11111111,就代表是-128.同理,12位的111111111111代表-1024.

龙江县19642423540: 数值0的补码的负数为什么是00000? -
纵凤白花: 若字长5位: [-0]原 =10000,最高位是符号位,1表示负数,其余是数值位 [-0]反 =11111, 将原码除符号位之外的数值位取反得反码 [-0]补 =00000,将反码末位加1(最高位进位1自然丢失)得补码

龙江县19642423540: 为什么补码中0只有一种表示 -
纵凤白花: 以8位字长定点有符号小数为例: [x]补 = 0.000 0000b 正数的补码与原码相同,此时亦为“正零”; [x]反 = 1.111 1111b 将反码的“负零”末位加1 求得“负零”的补码:[x]补 = 0.000 0000b 符号位进位1自然丢失,此为补码的“负零”;. 结论: 补码的“正负”与“负零”都是 0.000 0000b

龙江县19642423540: 求问 - 0000的补码 -
纵凤白花: 0的原码,补码都是0,不用反码加一加计算,非要这么算,进位要自然丢掉.为什么用补码表示正负数?就是为了只有一个0,因原码有+0和-0,这不符合数学规则,而补码就完全符合数规则了.你的提问是错的,没有-0.

龙江县19642423540: 当十进制数为多少时,它的原码、反码、补码的表示都一样 -
纵凤白花:[答案] 所有正数(其中包括了+0)的原码、反码、补码相同 对于0这个数,在计算机中有两种不同的表示形式:+0和-0 [+0]原=0000 0000 [-0]原=1000 0000 [+0]反=0000 0000 [-0]反=1111 1111 [+0]补=[-0]补=0000 0000

龙江县19642423540: 为什么8位有符号十进制整数 -
纵凤白花: +0和-0都是一个. 看看补码的原理就是了. 好像是绝对值按位取反+1. 128在8位补码是无法表示的,-128才能表示. 1000 0000是-128的补码,0的补码就是0.

龙江县19642423540: 请问+0和 - 0的原码,反码和补码分别是什么? -
纵凤白花:[答案] 如果是在字长为8位的计算机上, +0的原码是00000000 -0的原码是10000000 +0的反码是00000000 -0的反码是11111111 +0和-0的补码均为00000000

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网