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

本文介绍了计算机中数字的二进制表示法,特别是原码、反码和补码的概念。详细解释了二进制最高位作为符号位,以及正数、负数和0在三种码制下的特性。强调Java中所有数字都是有符号的,并且在计算过程中使用补码。最后总结了原码、反码和补码之间的转换步骤。

一、什么是原码

        原码:是一种计算机中对数字的二进制定点表示方法,原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为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)

举例理解:

        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表示负数

        举例理解:

                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、当我们看运算结果时,要看原码

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

        原码=>反码=>补码

        补码=>反码=>原码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值