A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

byte类型-128在计算机中二进制如何表示,网上查了很多资料,说的都很模糊,哪位高手能否给个答案

6 个回复

倒序浏览
1000 0000 0000 0000代表byte型-128的原码和补码。
先说原码,负数的原码一般是正数的原码将最高位改为1。假设128在byte范围内,它的“原码”为1000 0000 0000 0000(最高位为1 ,这不是正数的原码,这也是为什么byte最大只能存到127的原因)。将最高位变为1(它本身就是1),还是1000 0000 0000 0000。
再说补码,除最高位,后15位位取反加1。可是后15位取反加1后变为1000 0000 0000 0000超过了15的内容,产生溢出,所以只保留000 0000 0000 0000。加上最高位,补码为1000 0000 0000 0000
这个比较特殊,记住就好。
回复 使用道具 举报 1 0
为什么用补码进行底层运算,因为只有补码才能表示出0和-128。
回复 使用道具 举报
HARRY_yFd0S 发表于 2016-9-5 21:46
1000 0000 0000 0000代表byte型-128的原码和补码。
先说原码,负数的原码一般是正数的原码将最高位改为1。 ...

哥,byte 是8位的
回复 使用道具 举报
heilashi 发表于 2016-9-5 21:54
为什么用补码进行底层运算,因为只有补码才能表示出0和-128。

-128看来是特殊规定的了,用正常的源码和补码都无法解释
回复 使用道具 举报
HARRY_yFd0S 来自手机 中级黑马 2016-9-7 09:24:50
地板
看错了,但是是一样的。byte的原补码为10000000,short的原补码为10000000 00000000,int同理。
回复 使用道具 举报
HARRY_yFd0S 发表于 2016-9-7 09:24
看错了,但是是一样的。byte的原补码为10000000,short的原补码为10000000 00000000,int同理。 ...

那在byte中 -128就是特殊规定了,只有这也才能理解了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马