byte 的取值范围:-128 - 127
基本的数学计算方法,一个byte占8位,第一位为符号位,还有7位,7位能表示最大为:2^7 - 1 怎么来的呢:看如下数学计算
1111 111 = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 我们不用使用加法来算这个值,而是换种思路,如下:
(A * 2) - A = A 本身,对吧,那么:
(2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 )* 2 - ( 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 )= 依然是 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 的和
即:
2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 + 2^7 -
2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 通过抵消,最终变成了 2^7 - 2^0 = 2^7 - 1 = 127,就是这么来的。。。。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
我们只讨论 byte; byte 在计算机中是8位;第一位为符号位。0表示正数,1表示为负数,其余的7位表示 具体的值。要理解一点 就是 数值在计算机内存中的存储是补码的方式
存储的,有一定的规则,即正数的话 原码 反码 补码 一样,负数的话,原码是负数的绝对值,最高位 是1 ,反码是 最高位不变,然后其余位 取反 ,补码是 最高位不变,反码+1
举例:byte 能表示的正数的最大值为:
0111 1111 = 2的7次方 -1 = 127。
正数最小值为:
0000 0000 = 0;
正数的原码,反码 补码 相同。
再来看负数的最大负值:
1111 1111 = -2的7次方 -1 = -127
原码:1111 1111
反码:1000 0000
补码:1000 0001
------------------------------
再来看负数的最接近正数的值,即最小负值:
1000 0000 = -0;
原码:1000 0000
反码:1111 1111
补码:1000 0000(注意这里溢出了)
可见,-0 的原码 和 补码是一样的,实际上 计算机规定的,1000 0000 = -128 ;
通常说 -128 只有补码,没有原码和反码,因为原码是 -0 ,-0 你怎么能认为是 -128呢。
即:-128在计算机中的补码为:1000 0000 ,没有原码和反码;
是可以进行运算的,比如:
-128 + 3 = -125 在计算机中的计算如下:
补码(1000 0000)+ 补码(0000 0011)= 补码(1000 0011)
然后再把1000 0011转换成原码的步骤为:
符号位不变取反:1111 1100
取反后加1就是原码:1111 1101
再把原码转成十进制为:-125,计算的方法如图:
用计算器计算最快:原码去掉符号位,即:1111 1101 -->> 111 1101(7位) 粘贴在计算机的二进制那里:
总结:补码 1000 0000 就是 -128的意思,经过计算你会发现原码也是:1000 0000 ,但是我们通常说 1000 0000 没有原码,因为-0没有意义。
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/12899799.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2016-05-16 查询 IDE 的版本 方便安装第三方的时候选择
2012-05-16 Delphi Access violations 错误 窗体上下位置放错