none
请教大家,关于byte类型的范围! RRS feed

  • 问题

  • 请教大家,关于byte类型的范围:
    byte类型的范围是0~255
    转换为二进制是00000000~11111111
    比较容易理解,因为byte类型占用了8位

    但是sbyte的范围是-128-127
    转换为二进制是-10000000~1111111
    上限容易理解,总共有8位,而符号位占用了一位,所以最大只能是7位都写上1了,也就是1111111
    我的问题是这个下限是怎么回事啊!-10000000,加上符号位都9位了,怎样理解呢?
    请大家指教!


    周雪峰
    2009年2月19日 15:07
    版主

答案

  • 你这个问题不是和前面那个int问题一样么

    10000000  到11111111  难道不是128个数字么

    第一位并不是正负号  0不存在-0对应
    10000000 可不是-0   

     


    就算首页不能显示30天内排行榜 回答总数也快接近top10了 5555
    努力奋斗 重回首页排行榜!!! 55555
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    2009年2月19日 15:14
  • 这不是和~0 = -1一样吗,有空看看补码咯。
    好好学习,天天向上。
    2009年2月20日 15:09
  • 多谢Er.cn的提醒啊!也改写韦兄的耐心回复啊!
    感谢啊!已经明白了!

    总结:
    整数在计算机中是保存为补码的形式的,-128的补码是10000000,8位的二进制补码能表示的最小负数也就是-128了(除符号位以外其余各位都取0可以获得最小的负数),而8位的二进制补码能表示的最大正数是127(也就是01111111,这里第一位必须是0,代表这是一个正数)
    所以sbyte的范围是-128~127

    周雪峰
    2009年2月20日 15:52
    版主

全部回复

  • 你这个问题不是和前面那个int问题一样么

    10000000  到11111111  难道不是128个数字么

    第一位并不是正负号  0不存在-0对应
    10000000 可不是-0   

     


    就算首页不能显示30天内排行榜 回答总数也快接近top10了 5555
    努力奋斗 重回首页排行榜!!! 55555
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    2009年2月19日 15:14
  • 感谢回复啊!
    我只是想知道那个下限的二进制表示,为什么上限用了7位,而下限用了8位? 

    周雪峰
    2009年2月19日 15:22
    版主
  • 256 个数字  月定俗成  00000000 是0   就自然划分了
    就算首页不能显示30天内排行榜 回答总数也快接近top10了 5555
    努力奋斗 重回首页排行榜!!! 55555
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    2009年2月20日 13:39
  • 感谢你的回复!
    但是我感觉不是随意划分的,比如他就没有划分为-127~128。 

    周雪峰
    2009年2月20日 13:44
    版主
  • 这不是和~0 = -1一样吗,有空看看补码咯。
    好好学习,天天向上。
    2009年2月20日 15:09
  • 多谢Er.cn的提醒啊!也改写韦兄的耐心回复啊!
    感谢啊!已经明白了!

    总结:
    整数在计算机中是保存为补码的形式的,-128的补码是10000000,8位的二进制补码能表示的最小负数也就是-128了(除符号位以外其余各位都取0可以获得最小的负数),而8位的二进制补码能表示的最大正数是127(也就是01111111,这里第一位必须是0,代表这是一个正数)
    所以sbyte的范围是-128~127

    周雪峰
    2009年2月20日 15:52
    版主