关于进制问题

进制

二进制
0B或0b开头
八进制
0开头
十六进制
0X或0x开头

三码

原码、反码、补码
计算机底层以补码形式存储数据

正数反码、补码与原码相同,负数是除符号位外取反

八位二进制数为1111 1111~0111 1111,-127~ -0 ~ +0 ~127,其中包含1000 0000和0000 0000 ,即-0、+0

-0反码应该是1111 1111=-127,-127反码应该是1000 0000=-0

反码 -127 ~ -0 ~ +0~127(对应原码是-0 ~ -127 ~ +0 ~ 127)
补码-128~ -1 ~ +0 ~ 127(-0反码+1后为 1 0000 0000,进位舍弃,即0000 0000,此时-0补码与+0补码相同,到现在为止1111 1111~0111 1111中,只有1000 0000还没有,所以人为规定+0补码0000 0000,-0没有补码,而1000 0000=-128)

byte范围-128~127(计算机以补码形式存储数据)(在计算机中对应的补码1 0000 0000(-128)、1000 0001(-127)、1000 0010(-126)……
1111 1111(-1)、0000 0000(0)……0111 1111(127))

于是10+0=10;125+3=0111 1101 + 0000 0011=1000 0000=-128(正向溢出);
-127-2=1000 0001+1111 1110=1 0111 1111=0111 1111=127(逆向溢出);

求补码

当X为负数时
[X]补=256-|X|(因为这样可以保证X+|X|=0,即[X]补+|X|=1 0000 0000舍弃1,0000 0000=0)

以上自学所用,还有点糊涂,不保证正确性

计算机补码执行加减运算,使用了模N加减法

下面链接是为什么选择补码存储数据
https://www.zhihu.com/question/20159860

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新手学java2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值