Java基础(3)原码、反码、补码转换

一、什么是原码

        原码:是一种计算机中对数字的二进制定点表示方法,原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小

二、二进制(也就是原码)

        二进制由0和1组成

        二进制分为:

         8位(0000 0000)

        16位(0000 0000 0000 0000)

        32位(0000 0000 0000 0000 0000 0000 0000 0000)

        64位(0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000)

《Java基础(3)原码、反码、补码转换》

举例理解:

        0 对应的8位二进制数 = 0000 0000

        1 对应的8位二进制数 = 0000 0001

        5(4+1) 对应的8位二进制数 = 0000 0101

        7(4+2+1)对应的8位二进制数 = 0000 0111

        那么就可以理解为:0的原码是0000 0000  , 7的原码是 0000 0111

三、了解原码、反码、补码之间的转换

        1、二进制最高位(最左边)是符号位:0表示正数,1表示负数

《Java基础(3)原码、反码、补码转换》

        举例理解:

                1 的 8位二进制数为:0000 0001

                -1 的 8位二进制数为:1000 0001

        2、正数的原码、反码、补码都一样(正数三码合一)

        3、负数的反码=原码符号位不变,其他位取反(0->1,1->0)

        举例理解:

                      要计算一个数的反码要先知道原码

                      ①负数的原码

                       -1的原码是:1000 0001

                      ②负数的反码(原码符号位也就是最高位(最左边)不变,其他位取反)

                       -1的反码是:1111 1110

                 例2:

                        -8的原码是:1000 1000

                        -8的反码是:1111  0111

        4、负数的补码=反码+1

         举例理解:

                        计算一个负数的补码要先知道负数的反码(计算负数的反码要先知道负数的原码)

                        ①:负数的原码

                         -1的原码是:1000 0001

                        ②:负数的反码

                         -1的反码是:1111 1110

                        ③:负数的补码(反码+1)

                         -1的补码是:1111 1111

                  例2:

                        -7的原码是:1000 0111

                        -7的反码是:1111 1000

                        -7的补码是:1111 1001

        5、负数的反码=负数的补码-1

                        知道一个负数的补码可以倒推出来反码和原码

                        ①:负数的补码

                        -11的补码是:1111 0101

                        ②:负数的反码(补码-1)

                        -11的反码是:1111 0100

                        ③:负数的原码(原码符号位不变,其他位取反0->1,1->0)

                        -11的原码是:1000 1011

                   例2:

                        -32的补码是:11100000(64+32=96)

                        -32的反码是:11011111 (96-1=95)(95=64+16+8+4+2+1)

                        -32的原码是:10100000

        6、0的反码、补码都是0

        7、Java中没有无符号数(Java中的数都是有符号的)

        8、在计算机运算中,都是以补码的方式来运算的

        9、当我们看运算结果时,要看原码

四、原码、反码、补码之间的转换步骤总结

        原码=>反码=>补码

        补码=>反码=>原码

    原文作者:小羊快学
    原文地址: https://blog.csdn.net/Yangyuqing_/article/details/123717495
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞