计算机组成原理-原码、反码、补码和基本类型长度的计算

本文详细解析了原码、反码和补码的概念及其在计算机中的应用,同时介绍了Java基本类型所占空间及数值范围的计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在汇编的学习中,一开始就介绍了原码、反码和补码的关系;计算机只能识别01001这样的机器码,而汇编本质上来说是一种助记符,能够将人能读懂的助记符转化为机器才明白的机器码。而机器读取二进制是最高效的。

一、什么是原码、反码和补码

  • 原码
    原码是带符号位的二进制数,符号位即二进制数的最高位,用0表示该二进制数为正数,用1表示该二进制数为负数,符号位不参与二进制数转化结果的计算中。例如+13的八位原码为00001101,而-13位的八位原码为10001101

  • 反码
    对于正二进制数来说,反码就是原码本身;对于负二进制数来说,反码就是除了符号位之外的数取反,例如-13的原码是00001101,那么它的反码就是它的原码本身00001101;-13的原码为10001101,它的反码就是11110010;。

  • 补码
    对于正二进制数来说,补码就是原码本身;对于负二进制数来说,补码就是补码最低位+1,例如-13的补码是11110011,+13的补码和反码、原码都一致。

二、基本类型所占空间推算

看完了原码、反码和补码,现在来看看Java语言中的基本类型及其所占的空间:

类型占用字节数占用位数空间大小
byte18-2^7 ~ 2^7 -1
char216-2^15 ~ 2^15 -1
short216-2^15 ~ 2^15 -1
int432-2^31 ~ 2^31 -1
float432-2^31 ~ 2^31 -1
double864-2^63 ~ 2^63 -1
long864-2^63 ~ 2^63 -1

在计算机中,每一个数据都占用一定的空间,它们所占的空间用“位(bit)”来表示,例如一个byte类型,它占用1个字节数,即1*8=8bit,占8位空间,用图形来表示就是下图,其中最高位为符号位。

11111111
01111111

那么,将二进制数11111111转化为十进制数:

这里用到了等比数列的求和公式:

在这里插入图片描述

得:
S1 = -(2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0) = 2^7=-128
算上0占的位置,有
S2 = 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 - 1 = 127
所以求得一个byte类型数据范围为
-128~127

其余的各个基本类型所占的数据都可以通过这样算出来了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值