关于java中byte只能表示-128~127的问题的解释及处理

关于 Java 中 byte 类型的范围 关于基本类型的范围 阅读详情

按照计算机里的数值表示方式:

正数,补码和原码一致。

负数,补码为原码取反,然后再加一。

 

那么16的二进制表示就是0001 0000, -112的二进制表示就是1001 0000

 

计算机中一个字节为8位二进制,那么一个字节的数字的模为2^8 = 256

模的概念是这样的,比方说模为12(时钟),那么4和8互为补数.

因为 10 - 4 = 6

10 + 8 = 12 + 6 =6

 

所以JAVA中byte的数据144被表示为 -112(因为112和144互相为补数).

 

我们采用如下方式处理,因为当模为128时,112的补数为16,所以 0-112相当于 0 + 128 + 16,那么144 = -112 & 0x7F + 128

其中-112 & 7F就是16;

 

代码为:

public int bytetoint(byte tb)

{

  int temp;

  temp = Integer.Valueof(tb);

  if(temp < 0)

  {

    temp = temp & 0x7F + 128;

  }

  return temp;

}

Oracle 19c RAC安装踩坑实录:OpenSSH 8.x版本与OUI的“兼容性战争”及一劳永逸的解决思路 本文深入解析Oracle 19c RAC在Linux8环境中部署时遇到的OpenSSH 8.x版本兼容性问题,特别是[INS-06006]错误的根源与解决方案。从协议层分析冲突本质,提供SCP包装器技术、官方补丁应用指南及现代化部署体系构建三种解决方案,帮助企业高效完成RAC安装并规避类似问题。 阅读详情

相关推荐

模型检测--工具KeYmaera

论文:KeYmaera: A Hybrid Theorem Prover for Hybrid Systems 作者:Andre Platzer and JanKeYmaera摘要1 介绍2用于混合系统的KeYmaera验证工具3混合系统,混合自动机和混合程序 摘要 KeYmaera是一种用于混合系统的混合验证工具,它结合了演绎,实数代数和计算机代数证明者技术。它是自然的自动和交互式定理证明器 混合系统的规范和验证逻辑。 KeYmaera支持差分动态逻辑,它是用于混合程序的实值一阶动态逻辑,是混合自动机的程

ziigea的博客 1077

字符串与byte[]之间的转换

编码同一个字符在不同的编码下会被编成不同长度的编码,比如:ACSII,每个字符对应一个字节,实际上只使用了7位,从00h-7Fh。只能表达128个字符。GB2312,中文的一种编码,每个字符使用两个字节表示。UTF-8, 可以表达所有unicode字符,每个字符可以用1-3个字节表示。UTF-16, 可以表达所有unicode字符,每个字符可以用1-2个16位整数表示。UT

good_Alex55的专栏 6万+

2006NOIP普及组真题 4. 数列

从上述推理中,我们发现要输出的幂次和中的第 N 项(也就是幂次和中的序号N),对应的二进制位数和幂次和对应的二进制位数相同。当 k=3 时,k的幂次为1, 3, 9, 27, 81…,即第0位,第2位均为1,转成 k 进制(k=3)时。,即第2位,第3位均为1,转成 k 进制(k=3)时。转成 k 进制(k=3)时的幂次和为。,即第0位,第1位,第2位均为1,(即第0位,第1位,第2位均为1)N=12时,12的二进制是。(即第0位,第2位均为1)(即第2位,第3位均为1)结论:这道题就变成了。

weixin_40252159的博客 1514

byte超过范围-128~127强制转换结果

负数的补码是它的反码加1,1000 0001的反码是 1111 1110(符号位不变,其它位取反),再加1就是 1111 1111。截取最后8位 1000 0000,首位是1所以是负数,取补码:对 000 0000取反加1,得出 1000 0000即128。取补码,负数的补码是取反加1,则是 1111 1111 1111 1111 1111 1111 0111 1111。128的二进制转为 0000 0000 0000 0000 0000 0000 1000 0000。那么当超出时,会输出上面的数。

yandong634的专栏 1220

避坑指南:ZYNQ平台上AXI 1G/2.5G Ethernet Subsystem实现IEEE1588的5个关键点

本文详细解析了在ZYNQ平台上使用AXI 1G/2.5G以太网子系统实现IEEE1588精密时间协议(PTP)的5个关键避坑点。从硬件选型、Vivado工程配置到Linux驱动适配,提供了实战经验与优化技巧,帮助工程师在工业自动化、电力系统等场景中实现纳秒级时间同步。

weixin_30687051的博客 234

Cadence仿真实战:从零构建高精度带隙基准电压源

本文是一份详细的Cadence仿真实战指南,指导读者从零开始构建高精度带隙基准电压源。文章首先解释了带隙基准电压源稳定输出电压的原理,然后逐步演示了在Cadence Virtuoso环境中如何搭建测试电路、测量关键温度系数、计算并搭建核心电路,并通过参数扫描和迭代调优来驯服温度漂移,最终实现低漂移的基准电压输出。

weixin_29207533的博客 242

java当数值超过byte时_java中无符号类型的解决方案

1.无符号和有符号计算机中用补码表示负数,并且有一定的计算方式;另外,用二进制的最高位表示符号,0表示正数、1表示负数。这种说法本身没错,可是要有一定的解释,不然它就是错的,至少不能解释,为什么字符类型的-1二进制表示是“1111 1111”16进制表示为FF,而不是1000 0001。在计算机中,可以区分正负的类型,称为有符号类型,无正负的类型,称为无符号类型。使用二进制中的最高位表示正负一个字...

weixin_42394785的博客 1080

化工热力学软件:Aspen Plus二次开发_(9).过程控制与动态模拟v1

Aspen Plus 提供了丰富的过程控制工具和方法,可以用于静态和动态过程的模拟和控制策略的开发。通过控制回路设计、动态模拟、优化工具和数据交换接口,用户可以设计和优化各种复杂的控制策略,提高化工生产的稳定性和效率。此外,结合外部软件(如MATLAB、Simulink、LabVIEW等),可以实现更高级的控制策略,如自适应控制和模型预测控制,进一步提升过程控制的精度和灵活性。希望本文的内容能帮助用户更好地理解和应用Aspen Plus中的过程控制功能。

kkchenjj的博客 405

byte为何范围是-128~127

byte为何范围是-128~127  从我们接触Java的时候,就被告知基础类型byte是一个字节,占8位,表示的范围是-128~127。那么为什么会这个范围呢?  咱们先回顾一下计算机基础: 1. 在计算机内部数据的存储和运算都采用二进制; 2. 计算机中数据分为有符号数和无符号数,对于有符号数,计算机规定用最高位来表示符 号。“0”表示正数,“1”表示负数;

求生之路 9931

把入库交货单的 GOS 附件自动带进审批 Work Item:用 SOFM 对象打通 SAP Workflow 附件链路

本文介绍了一种在SAP ECC系统中将入库交货单的GOS附件自动附加到Workflow审批项中的解决方案。通过使用BOR对象引用列表和SOFM业务对象,审批人可直接在Work Item中查看附件,无需返回原单据界面。文章详细阐述了从BUS2015业务对象获取附件连接、转换LOIO_ID为SOFM对象引用,并将附件列表绑定到User Decision步骤的具体实现方法。该方案适用于经典SAP Business Workflow+BOR架构,核心ABAP代码可直接复用,有效解决了审批流程中的附件可见性问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 246

【音视频】PJSIP库——示例简介、C++类说明

aectest音频回声消除测试工具,用于演示音频处理模块中的回声消除(AEC)功能,通常用于 VoIP 场景中优化语音质量。auddemo音频播放 / 录制演示,展示如何使用 PJProject 的音频接口进行基本的音频数据采集、播放和处理,例如波形显示或格式转换。stereotest立体声处理测试,可能用于演示多声道音频的处理方式,如混音、声道分离等。tonegen音频信号生成工具,用于生成测试用的音频信号(如正弦波、音调等),常用于音频设备测试或调试。recfile。

郭老二 434

关于java 一byte整型数据为-128~127的原因

原码 反码 补码 概念 原理 详解 - 白乾涛 - 博客园 关于byte储存-128的问题 - 优快云博客 我自己的理解就是1000 0000 符号位为1表示 “负000 0000”即 -000 0000,与 0000 0000,重复了,所以 1000 0000可以表示为负的128,即-128...

whjl1的博客 721

2023华为od机试C卷【最富裕的小家庭】Java&Go 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 1903

为什么一个byte的存储范围是-128~127?

本文关键字:byte、字节、二进制位、反码、补码。在计算机中,一个二进制位是最小的存储单元,由于是二进制,所以能存储的数字只能是0和1。

微光点亮星辰 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java中byte类型的范围

java种为什么byte的范围是 -128~127 在java中byte类型占8位 表示的范围是0000 0000 ~ 1111 1111 总共256个数, java中byte类型有正负,最高位表示正负,0为正,1为负。 我们先看正数: 0000 0000 ~ 0111 1111(原码)( 0 ~ 127,共128个数)我们知道在计算机系统中,数值一律用补码来表示和存储。正数的原码,反码,补码...

yuyonbbo的博客 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【秒懂】byte的取值范围为什么是-128~127?

直接给总结:计算机规定了0000 0000 代表0,1000 0000代表的-0没有意义,必须找个~127~127之外的数和它对应,「人为规定-0就是-128」,而且这么做完美适合计算机做减法运算。来我们一步步分析分析:1.byte占用8位,每位用0或1表示,能够表示256(2^8)个数据。2.这8位分为符号位(最高位)和数值位(剩余七位),符号位0...

诚 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java中byte类型的取值范围为什么是 -128 到 127 ?

在计算机内,定点数有3种表示法:原码、反码和补码 原码 :二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码 :正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码 :正数的补码与其原码相同;负数的补码是将其原码的除符号位外的所有位,逐位取反,然后加1。 Java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示...

春卷同学的博客 1397

关于 为什么 byte型 127+1= - 128?

关于 为什么 byte型 127+1= - 128? java中byte型数据的范围是-128~127; 当超出范围后会造成溢出现象 byte 属于 -128 ~ +127 范围 127加的数 >1就会数据溢出,-128减的数 >1也会溢出.       127+1 = -128;       127+2 = - 127;     &nb

weixin_42270074的博客 2702

byte的范围为何是-128~127,而不是-127~128?

一、计算机该怎么做减法? 比如2-1=1,1-1=0.由于种种原因(精力有限,暂不深究),加法电路难度和成本已经很高了,当时的条件下,再去设计一个减法电路,费力又费钱,前辈们想用加法电路来解决减法运算问题。思路如下,熟悉的可以跳过。 假设当前时针指向8点,而准确时间是5点,调整时间可有以下两种拨法: 一是倒拨3小时:8-3=5 二是顺拨9小时:8+9=...

知道这个有什么用? 1万+

Java中为什么byte的范围是 -128~127?

使用原码时,要设计硬件区分符号位,比较绝对值大小。使用反码时,无需设计硬件比较大小,但零存在两种表示方法。使用补码,可以将符号位和数值域统一处理,很好的解决了原码和反码的问题。同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路,运算器中不需配置减法电路,节省了硬件线路,简化了运算器的设计。

weixin_48153993的博客 364

转:【秒懂】byte的取值范围为什么是-128~127?

直接给总结:计算机规定了0000 0000 代表0,1000 0000代表的-0没有意义,必须找个~127~127之外的数和它对应,「人为规定-0就是-128」,而且这么做完美适合计算机做减法运算。 来我们一步步分析分析: 1.byte占用8位,每位用0或1表示,能够表示256(2^8)个数据。 2.这8位分为符号位(最高位)和数值位(剩余七位),符号位0表示正数,1表示负数。 3.按上一...

sglwh1234的博客 352

似乎你总也记不住,byte取值范围是 -127~128 还是 -128~127

小傅哥 | https://bugstack.cn 沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。目前已完成的专题有;Netty4.x实战专题案例、用Java实现JVM、基于JavaAgent的全链路监控、手写RPC框架、架构设计专题案例、源码分析等。你用剑????、我用刀????,好的代码都很烧,望你不吝出招! 一、前言介绍 无论在面试过程中还是平时的技...

bugstack虫洞栈 2071

详解byte的范围:一个神奇的圈搞定-128是怎么来的

有这样一个思考题:byte是有符号整数,所以最高位是符号位,有效数字位只有7位,用二进制原码表示其范围为:11111111 ~ 01111111,换算成二进制是-127 ~ 127。但是,这个答案,对吗?显然是不对的,众所周知,byte表示的范围是-128~127。但是,-128是从哪里来的呢?这和计算机存储数字的方式有关,计算机并不是直接存储数字的二进制原码,而是以反码的形式进行存储。本文以byte类型为例,通过详细分析其范围,深入理解反码。

epitomizelu的专栏 1723

java基本数据类型byte的取值范围-128~127,以及溢出后取值的实现

byte取值范围的计算和溢出取值的计算: 首先看一下byte类型在java.lang包下的与源码,源码指定了byte类型的最大值和最小值。 2.在计算机内存存放的数值都是补码形式,第一位为符号位(),对应的取值如下: 求负整数的补码,先判定其为负数,然后将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1获取值。 补码 原码 十进制 备注 0111 11...

奋斗的小牛的博客 1409

java byte 表示_详解java中的byte类型

Java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。下面这篇文章主要给大家介绍了关于java中byte类型的相关资料,需要的朋友可以参考下。介绍byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位带符号二进制数的取值范围是[-1...

weixin_34163020的博客 1130
上一篇: 用html断点调试OCX的处理
下一篇: word里显示修订的最终状态的方法
lopper
博客等级 码龄22年 61粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值