byte类型数据

byte类型数据今儿一个小朋友问我一件事情 Java 的 byte 类型的数据范围是从 128 到 127 一直在想为什么不是 128 到 128 呢 首先我们得明白一件事情 那就是运算规则 正数的最高位都是 0 正数的值就是二进制表示的值 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 负数的最高位都是 1 负数的值是取反后加一然后加个负号得到得值 nbsp nbsp nbsp nbsp nbsp nbsp

今儿一个小朋友问我一件事情

Java的byte类型的数据范围是从 -128 到 127一直在想为什么不是 -128 到 128呢?
首先我们得明白一件事情,那就是运算规则:
正数的最高位都是 0 ,正数的值就是二进制表示的值。                                    
负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到得值。      






我们用8位的二进制来说明一下此规则:
比如:00000001。最高位是0 为正数 ,那么表示的就是 十进制的 1。
再比如:.最高位是1 为负数,值是多少?取反得到 0  加1 得到  0 ,那么值为 -127



理解此运算规则我们正式开始说byte,byte正好是8位的二进制数。short是16位 int是32位 long是64位。

不难理解,byte的最大正数就是 0(最高位必须是0),也就是 127。
那么你可能会想 byte的最小负数就是  了,对不对?


这么想就大错特错了。让我们看看这个二进制数表示多少。
根据上面的提示 我们知道这是一个负数。它的值是先取反再加1 。

取反得到:00000000,加1得到 00000001 。最后得到的值为-1.
这可是最大的负数啊。由此你是不是想到了最小的负数会不会是呢?
让我们算一下 取反:0 加1得到 最后得到 -128.

127是0  然而 -128是 ,看出来一个奇怪的事情。
仔细的看一下这两个二进制数 是不是前者加1就得到后者呢?对。
可以编一个小程序实验一下:



 byte a = 127; a+=1; System.out.println(a); 

结果正好是-128
由此我们可以看出来二进制从 00000000 到0到到
                           即 十进制从       0          到    127      到    -128     到 -1

另外:

8位(bit)=1字节(Byte),1024字节=1KB;

提到了字节,不得不再提到“字”这个计量单位:“字”由若干个字节构成,字的位数叫做字长,字长就是说字所对应的二进制数的长度。不同的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。
前期的DOS就是8位的,后期的DOS是16位的,Win9X是基于DOS的,所以也是16位的,NT核心的Windows是32位的,现在也有了64位的XP/2003,CPU也有了64位的,这个操作系统和CPU所说的位就是bit的意思,即二进制数的长度。
字节是固定由8位二进制构成,64位系统就代表了64位的二进制代表一个字,换算成字节就是64/8=8,即是说由8字节构成一个字,32位系统就是32/8=4,4个字节代表一个字。








版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232599.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Hyper-V 与Broadcom网卡兼容问题 dell-r420 720

    Hyper-V 与Broadcom网卡兼容问题 dell-r420 720

    2021年9月2日
    64
  • gmap绘制路径_cad画可见点

    gmap绘制路径_cad画可见点将在地图上用鼠标左键点击的点绘制出来(两点之间用直线连接),并且能够随地图一起实现等比例缩放和拖拽。GMap主要涉及到几个坐标的转换:经纬度与GPoint的转换:GPoint是gMapControl控件坐标,坐标原点(0,0)位于控件的左上角,这个转换用函数FromLatLngToLocal()完成。GPoint与经纬度的转换:将控件坐标转换成经纬度,用函数FromLocalToL

    2025年7月30日
    3
  • DDD(领域驱动设计)

    基本概念:  领域驱动设计(简称ddd)概念来源于2004年著名建模专家ericevans发表的他最具影响力的书籍:《domain-drivendesign–tacklingcomplexityintheheartofsoftware》(中文译名:领域驱动设计—软件核心复杂性应对之道)一书。,书中提出了“领域驱动设计(简称ddd)”的概念。领域驱动设…

    2022年4月4日
    48
  • JAVA实习生/应届生面试笔试题(一)

    一:单选题1. 下列哪一种叙述是正确的(D )A.abstract修饰符可修饰字段、方法和类B.抽象方法的body部分必须用一对大括号{}包住C.声明抽象方法,大括号可有可无D.声明抽象方法不可写出大括号2. 如下代码publicclassTest{publicintaMethod(){staticinti=0;i++;returni;}publicstatic…

    2022年4月9日
    82
  • 录屏做成gif的软件_下载录屏软件

    录屏做成gif的软件_下载录屏软件推荐一款神奇的gif录屏小软件,开源免费安装后打开即可录屏支持win,macos下载:https://www.cockos.com/licecap/github:https://github.com/justinfrankel/licecap

    2025年12月4日
    2
  • yuv422转rgb(422sp转420p)

    YUV420转RGB888yuv420的数据存储方式是planar,就是在一帧中先存y分量,存完y存u,接着v分量。而在yuv420中有y分量widthheightbyte,uv分量各是widthheight1/4,一帧中总的数据是widthheight3/2(widthheight12/8).所以当时认为,yuv分量代入转换公式的话,uv分量是不是少了。其实不然,因为是每四个y分量共用一个u分量一个v分量,但也不是[YiYi+1Yi+2Yi+3]共用[Ui],[Vi],因为是一个22的窗口内的Y分量

    2022年4月10日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号