23的原码反码补码,原码反码补码转换例题 |
您所在的位置:网站首页 › 反码加反码 › 23的原码反码补码,原码反码补码转换例题 |
在计算机中,补码计算机只识别补码,以补码的形式计算原码是给人看的,根据我们的理解,解码存在着求出补码所引起的概念。 正数反码的补码原码相同,都理解自己负数的补码是反码加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 - 1261000 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 |