三、有符号数的二进制表示

 一、预备知识

1、原码:

        正数的原码就是其对应的二进制数

        负数的原码就是其绝对值的原码在符号位加1(最高位)

2、反码(就是原码到补码或补码到原码的过度码)

        正数的反码与原码相同

        负数的反码就是其原码除符号位,取反

3、补码

        正数的补码与其原码相同

        负数的补码就是其原码除符号位其余取反在最低位加1

十进制在二进制中可以使用原码、补码、反码表示,但是只能使用补码来进行运算和存储。[符号位的进位舍弃]

例:求-8的补码表示

s1:求出-8的原码

        |-8| 的原码 :1000 1000

s2:求出其的补码

        |-8| 的补码 :1111 1000

例:short a = 128; byte b = (byte)a, b = ?

        首先,java中byte占一个字节,short占两个字节,所以强转要进行高位的截取

        a = 128的原码:00000000 10000000

        强转截取后得到b的补码(因为计算机中以补码形式参与运算),10000000

        此时要求出b的十进制,则要把b的补码变成原码。在这里10000000 - 1 我不太懂,我只能记住这里10000000的代表的十进制就是-2^7,所以b就是等于-128.

你们谁知道1000000的十进制为什么是-128,请评论区show一下,谢谢了:)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值