二进制原码、反码、补码、最大值、最小值
计算机 二进制
符号位
最高位代表符号位,0表示正数,1表示负数;000... 为正数,100... 为负数 , 000...000表示0
原码、反码、补码
原码:其本身。
反码:正数的反码与原码一致,负数的反码对原码按位取反,符号位不变。
补码:正数的补码是其本身,负数的补码是反码加1,符号位不变。
5:0000 0101(原码);0000 0101(反码);0000 0101(补码)
-5:1000 0101(原码);1111 1010(反码);1111 1011(补码)
计算机中存储数据是采取 补码的方式进行存储的,
为什么采用补码存储的方式呢
可以使符号位也参与计算;使 减法 变成 加法计算;使0的表示只有一种
以原码存储:
1(0000 0001)+(-2(1000 0010)),无法直接计算,
以反码存储:1
1(0000 0001)+(-2(1111 1101)) =(-1) 1111 1110
1(0000 0001)+(-1(1111 1110)) = (-0)1111 1111,原码为1000 0000,
则此时0的表示形式有两种,-0:1000 0000,+0:0000 0000
以补码计算:
1(0000 0001)+(-2(1111 1110)) = -1(1111 1111),原码为1000 0001
1(0000 0001)+(-1(1111 1111)) = 0 (0000 0000),溢出的最高位忽略,而原来的1000 0000则用来表示最小值
最大值与最小值
对于有n位的二进制数,其最大值 为 2n,最小值为-2n
byte:1字节,1byte = 8bit,其二进制数共8位,即 0000 0000,最大值是27-1,最小值为-27,
int:4字节,4byte = 32bit,其位数为32 位,最大值是231-1,最小值为-232,
最大值
以8位计算:0111 1111
公式一:S = 26+25+24+23+22+21+20
两边同乘以2
公式二:2S =27+ 26+25+24+23+22+21
公式二 减去 公式一,等于 S = 27-20=27-1
最小值
8位的最大值为27-1( 0111 1111),其绝对值的负数为 -27+1(1000 0001),再减去1,
-27+1(1000 0001)+(-1(1111 1111))=(-27)1000 0000,则用1000 0000表示最小值,因为原来是表示0(以反码计算时)的,其原码是0000 0000,很显然是不对的,所以最小值是没有原码的;
最大值 (0111 1111)= 最小值(1000 0000)+(-1)(1111 1111)
最小值(1000 0000) = 最大值(0111 1111)+1 (0000 0001)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)