23的原码反码补码,原码反码补码转换例题

您所在的位置:网站首页 反码加反码 23的原码反码补码,原码反码补码转换例题

23的原码反码补码,原码反码补码转换例题

#23的原码反码补码,原码反码补码转换例题| 来源: 网络整理| 查看: 265

在计算机中,补码计算机只识别补码,以补码的形式计算原码是给人看的,根据我们的理解,解码存在着求出补码所引起的概念。 正数反码的补码原码相同,都理解自己负数的补码是反码加1,原码相反是补码的反码加1,补码和原码转换中人与计算机交流求反码原则:的最高有效位是符号位。 反时符号的比特不变,其它各比特逐比特取反,取反符号和取反是两个概念。 ~:位取逆0000 0001,逆后11111 1110,0000001的逆符号0000001,每1位取逆为-2, 取00000001, 逆后1111110 (补码计算机识别(1111 1110求原码(-2原则问题)计算机与补码的关联以补码形式计算-1 1000 0001 )原码)-2 1000 0010 (原码(-3-1111111111110 (11110 ) 如所述=11111111-2(111111101 )=1111 1110=1111 1101 )补码格式,展示给机器)

1、自己决定是否需要正负。

就像你必须决定某个量要用整数还是实数,要用多大的范围数一样,你必须自己决定某个量是否需要正负。 如果该量没有负值,则可以是带正负的类型。

在计算机中,能够区分正负的类型称为带符号类型,没有正负的类型(仅正值)称为无符号类型。

数值类型分为整数型或实数型,整数型分为无符号型或有符号型,实数型只有符号型。

文字类型也有有符号和无符号的类型。

例如有两个量,年龄和库存。 前者被确定为无符号字符类型,后者被确定为有符号整数类型。

2、为了表示正负,使用二进制的最高位。

首先必须知道最高位是哪一个吗? 一字节类型(如字符类型)的最高有效位为第七比特、第二字节的数量、最高有效位为第十五比特、第四字节的数量、以及最高有效位为第三十一比特。 根据长度的数值类型不同,最高位也不同,但总是最左边的。 字符类型固定为1字节,因此最高有效位始终是第7位。

(红色为最高位) )。

单字节数: 1111 1111

2字节数: 111111111111111111111

4字节数: 1111111111111111111111111111111111111111111111111111111111111111

如果指定数量为无符号类型,则最高有效位的1或0与其他位一样用于表示该数量的大小。

如果指定数量为无符号类型,则最高数量称为“符号位”。 1表示负值,0表示正值。

3、无符号数和有符号数范围的区别。

在无符号数中,所有位都用于直接表示其值的大小。 因为在有符号的数中最高位表示正负,所以正值的情况下,该数的最大值变小。 比较一个1字节的数值:

无符号数: 1111 1111值: 255 1* 27 1* 2的六方1*251*241*231*221*21*20

有符号数: 0111 1111值: 1271 * 261 * 251 * 241 * 231 * 221 * 211 * 20

对于相同的字节,无符号数的最大值为255,有符号数的最大值为127。 为什么这么说,是因为有符号的数中的最高位是为了表示符号而被去掉的。 而且,最高位的权重也最高(对1字节数来说2的7次方=128 ),所以知道只要少于1位,最大值就会一下子减半。

但是,码数的优点是可以表示负数。 因此,虽然在最大值下缩小了,但向负值的方向延伸了。 我们还在比较1字节的数值:

无符号数--------255

符号数----128--------0--------127

相同字节,无符号最小值为0,有符号数最小值为-128。 因此,两者能够表现的不同数值的个数都相同,为256个。 但是,前者表示0到255的256个,后者表示-128到127的256个。

有符号数据类型的最小值是如何计算的?

有符号数据类型最大值的计算方法与无符号完全相同,但少了一个最高有效位(请参见第3点)。 但是,在负值范围内,无法用1* 26 1* 25的公式直接转换数值的计算方法。 在计算机中,负数除了最高位为1以外,还以补数形式表现。 因此,在计算其值之前,需要复原补数。 这些内容将在第六章的二进制知识中统一学习。

现在,让我们先直观地看看补丁的形状:

根据我们原有的数学经验,在十进制中,1表示正1,并加上负号。 -1表示相对于1的负值。

在中,很容易认为二进制数(1字节) 0000 0001应该表示正1,前1位之后) 1000 0001应该表示-1。

但是,实际上计算机的规定有点相反。 请参考下表。

二进制值(1字节)十进制值

1000 0000 -128

1000 0001 -127

1000 0010 -

126

1000 0011 -125

... ...

1111 1110 -2

1111 1111 -1

首先我们看到,从-1到-128,其二进制的最高位都是1(表中标为红色),正如我们前面的学。

然后我们有些奇怪地发现,1000 0000 并没有拿来表示 -0;而1000 0001也不是拿来直观地表示-1。事实上,-1 用1111 1111来表示。

怎么理解这个问题呢?先得问一句是-1大还是-128大?

当然是 -1 大。-1是最大的负整数。以此对应,计算机中无论是字符类型,或者是整数类型,也无论这个整数是几个字节。它都用全1来表示 -1。比如一个字节的数值中:1111 1111表示-1,那么,1111 1111 - 1 是什么呢?和现实中的计算结果完全一致。1111 1111 - 1 = 1111 1110,而1111 1110就是-2。这样一直减下去,当减到只剩最高位用于表示符号的1以外,其它低位全为0时,就是最小的负值了,在一字节中,最小的负值是1000 0000,也就是-128。

我们以-1为例,来看看不同字节数的整数中,如何表达-1这个数:

字节数 二进制值 十进制值

单字节数 1111 1111 -1

双字节数 1111 1111 1111 1111 -1

四字节数 1111 1111 1111 1111 1111 1111 1111 1111 -1

可能有同学这时会混了:为什么 1111 1111 有时表示255,有时又表示-1?所以我再强调一下本节前面所说的第2点:你自已决定一个数是有符号还是无符号的。写程序时,指定一个量是有符号的,那么当这个量的二进制各位上都是1时,它表示的数就是-1;相反,如果事选声明这个量是无符号的,此时它表示的就是该量允许的最大值,对于一个字节的数来说,最大值就是255。

原码、反码、补码

我们已经知道计算机中,所有数据最终都是使用二进制数表达。

我们也已经学会如何将一个10进制数如何转换为二进制数。

不过,我们仍然没有学习一个负数如何用二进制表达。

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

00000000 00000000 00000000 00000101

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

现在想知道,-5在计算机中如何表示?

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

什么叫补码呢?这得从原码,反码说起。

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

比如 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。

码、反码、补码

结束了各种进制的转换,我们来谈谈另一个话题:原码、反码、补码。

我们已经知道计算机中,所有数据最终都是使用二进制数表达。

我们也已经学会如何将一个10进制数如何转换为二进制数。

不过,我们仍然没有学习一个负数如何用二进制表达。

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

00000000 00000000 00000000 00000101

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

现在想知道,-5在计算机中如何表示?

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

什么叫补码呢?这得从原码,反码说起。

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

比如 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。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3