为什么JAVA中(byte)128结果为-128;(byte)-129结果为127
为什么JAVA中(byte)128结果为-128;(byte)-129结果为127
在JAVA中默认的整型为int型,int型占4个字节,为32位。byte占一个字节为8位。
JAVA中的二进制都是采用补码形式存储:
⑴一个数为正,则它的原码、反码、补码相同
⑵一个数为负,则符号位为1,其余各位是对原码取反,然后整个数加1
int类型的128 原码为0000 0000 0000 0000 0000 0000 1000 0000
当将int类型128转换为byte类型时,发生强制转换,截取了最后8位为
1000 0000 由于第一位代表符号位,按理解应该此处应该表示为-0与0000 0000应该是一样的表示0。但是我们都知道byte占8位,28为256,byte最多可以表示256个不同的数值。
0000 0000~0111 1111 128个
1000 0000~1111 1111 128个
如果 byte中0000 0000 和1000 0000表示0浪费了内存,所以byte中1000 0000表示-128。
int类型的-129原码为1000 0000 0000 0000 0000 0000 1000 0001
补码为1111 1111 1111 1111 1111 1111 0111 1111
强制转换为byte类型为0111 1111
0111 1111为正数,值为127
为什么JAVA中(byte)128结果为-128;(byte)-129结果为127的更多相关文章
- Java中两个或多个byte数组合并及int类型转数组
Java中两个或多个byte数组合并及int类型转数组 // 用list好处是可以未知多个? public static byte[] test(List<byte[]> values) ...
- 关于java中强制转换
在百度上遇到一个问题,描述如下: 在java中,定义两个变量 byte x = (byte) 128; byte y = (byte)-129; 输出后,为什么结果是-128和128? 借此机会,自己 ...
- java基础(七)-----深入剖析Java中的装箱和拆箱
本文主要介绍Java中的自动拆箱与自动装箱的有关知识. 基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型 ...
- 一文读懂什么是Java中的自动拆装箱
基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为 ...
- Java中的自动拆装箱(转)
出处: 一文读懂什么是Java中的自动拆装箱 本文主要介绍Java中的自动拆箱与自动装箱的有关知识. 基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我 ...
- 什么是Java中的自动拆装箱
1.基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值 ...
- Java中的char到底是多少个字节?
貌似一个简单的问题(也许还真是简单的)但是却把曾经自认为弄清楚的我弄得莫名其妙 char在Java中应该是16个字节byte在Java中应该是8个字节char x = '编'; //这样是合法的,输出 ...
- java中的基本数据类型和引用数据类型
java中基本数据类型有8种:byte,short,int,long,char,float,double,boolean 整型有四种:byte short,int,long byte: 1字节 ...
- java中int的最值解析
java中int的最大值为十进制的2147483647,也就是java能进行操作的最大数值,超出就会显示不正常.针对以下问题进行讨论. 1.最大值为什么是2147483647? java中int类型占 ...
- 关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)
先看一段推理<*一切都是在8个比特位的前提下,讨论二进制的符号位,溢出等等,才有意义*> +124:0111 1100 -124:1000 0100 +125:0111 1101 -125 ...
随机推荐
- Junit单元测试简单使用
第一步:pom文件引入相关文件 <dependency> <groupId>org.springframework.boot</groupId> <artif ...
- 解决Idea 中Java编译器的版本自动变成1.5的问题
可在pom文件中加入以下配置: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins ...
- typescript学习 回顾查漏
1.在public构造函数上使用on参数是一种速记,它使我们能够自动使用该名称创建属性. class Student { fullName:string; constructor(public fir ...
- 【DM论文阅读杂记】复杂社区网络
Paper Title Community Structure in Time-Dependent, Multiscale, and Multiplex Networks Basic algorith ...
- vue 分页显示 引用Element框架
VUE组件 父页面-子组件-传值 单表查询图片上传: 注释为简单方法 图片显示方法: 红框处应该为地址+存图片的文件夹名 +当前图片的值 在vue中引用Element需要的步骤 1.在终端中输入网址 ...
- Linux 第五节 (shell脚本while循环,case,计划任务,用户及权限)
#!/bin/bash #this is a test script PRICE=$(expr $RANDOM % 1000) //将随机得出的数字取余 TIMES=0 while true do ...
- SQL面试题,工作整理sql
一.数据库和算法 表名:student,name,course,score 张青 语文 72 王华 数学72 张华 英语 81 张青 物理 671.用sql查询出& ...
- Linux内核红黑树2—移植笔记
转自:https://www.cnblogs.com/hellokitty2/p/15362596.html 另外可参考:https://zhuanlan.zhihu.com/p/26599934 一 ...
- 直播软件源码,uniapp滚动条置顶实现
直播软件源码,uniapp滚动条置顶实现 实现功能: uniapp置顶滚动条.自定义页面滚动条的位置 实现代码: uni.pageScrollTo({ scrollTop: 0, dura ...
- sdio 移植st官方例程 stm32f103
第一步:建立驱动文件 建立sdio_sdcard.h和sdio_sdcard.c,并将这两个文件添加到MDK工程中,如下图 第二步:移植官方例程 1.找到STM32F10x_StdPeriph_Lib ...