关闭

java byte 类型的范围解释l

标签: java
284人阅读 评论(0) 收藏 举报
分类:

1.  java  byte 类型的范围

    计算机中数据存储采用二进制 ,拿byte 为例  0000 0001  

    最左边的0 计算机认为这个数字0000 0001   为正数 转化为10进制 -->1;

    byte 1000 0000 计算机认为这个数字为 负数 ,最左边的1 来识别。

     负数存储在计算机中转换 以-128 为例子 是绝对值128 的反码+1  ,把128 转化为2进制 1000 0000  反码-->0111 1111  加1--->1000 0000。

     之前有个困惑 一直说byte 的范围是-128  -128   ,-128 在计算机中转换为 原码的2进制为 1000 0000 这个不是负数码,这个是我们要纯属到计算机中的值 和正负无关 ,只是个     值(脑子有点呆了)。 

    补码 -1  的反码=补码的反码+1 ,为什么呢 ,这个问题 害的我浪费了一张纸 ,一个补码它可能有 01  ,10,  11 情况(无0000 0000)  然后减 1   加过之后变为 00 ,01 ,10 ,反      码 就变为 11, 10 ,01。 来看补码的反码+1 ,反码 10,01,00 -->+1 -->11,10,01  一样。

    这个不是最有趣的,有趣的是  补码+1的反码 是够等于 补码的反码-1 呢? 一个补码它可能有01,10,11 然后加1--> 10,11,100-->反码 --> 01,00,011。

     补码的反码-1 一个补码可能是01,10,11 然后反码-->10,01,00-->减一--> 01,00,? 到这里就推不下去了。

    正常的想法是补码-1 的反码 等于 补码的反码+1  -->01,10,11-->00,01,10-->11,10,01。

       -->01,10,11-->10,01,00-->11,10,01  这个就成立了,为什么会出现上面无法算下去的情况呢 应该  补码的反码 可能是 0000 0000 所以这个就没法算了。

     

    

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:717次
    • 积分:44
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条