基本数据类型的范围表示计算

Yolov5s/Yolov8s网络结构图 yolov8、yolov5网络结构图 阅读详情

一、基本数据类型

基本数据类型:四类八种
整型浮点型字符型布尔型
数据类型字节型短整型整型长整型单精度浮点数双精度浮点数字符型布尔型
关键字byteshortintlongfloatdoublecharboolean
包装类ByteShortIntegerLongFloatDoubleCharacterBoolean
内存占用

1 byte

8 bit

1个字节

即8个比特位

2 byte

16 bit

2个字节

即16个比特位

4 byte

32 bit

4个字节

即32个比特位

8 byte

64 bit

8个字节

即64个比特位

4 byte

32 bit

4个字节

即32个比特位

8 byte

64 bit

8个字节

即64个比特位

2 byte

16 bit

2个字节

即16个比特位

无

明确规定

表示范围-2^{7} ~ 2^{7}-1-2^{15} ~ 2^{15}-1-2^{31} ~ 2^{31}-1-2^{63} ~ 2^{63}-1知道有范围,但一般不关注0 ~ 65535

true

false

                           注意:

                           计算机的最小单位:bit(比特)

                           计算机的基本单位:byte(字节)

                           计算机的最小存储单位:byte(字节)

                           换算:1 byte = 8 bite ( 1个字节 = 8个比特位 )

                                      1 kb = 1024 byte

                                      1 mb = 1024 kb

                                      1 gb = 1024 mb

二、机器码、真值、原码、反码与补码  

在探究各个数据类型所表示范围前,要先引入几个名词解释,即:机器码、真值、原码、反码、补码。

机器码 :现实世界中的一个数字在计算机系统中的二进制表示形式。

               以一个byte类型的 +3 举例,

               其二进制表示形式为 0000 0011 ,其中第一位 0 表示正数,后七位 000 0011 表示数值 3 ,合起来,就转换为十进制就是 +3 。

               以一个byte类型的 -3 举例,

               其二进制表示形式为 1000 0011 ,其中第一位 1 表示负数,后七位 000 0011 表示数值 3 ,合起来,就转换为十进制就是 -3 。

真值:带符号机器数真正的数值,被称为该机器的真值。

原码 : 符号位 + 真值的数值位。

        如 -3: 1  +   000 0011

如下列计算
  1 - 2
= 1 + (-2) 
=(0000 0001)原 + (1000 0010)原
=(1000 0011)原
= -3

很显然计算结果是错误的,此时便要引入 反码 的概念。

反码:反码的表示与符号位有关。

           正数的反码是其原码本身。

           负数的反码是其原码保持符号位不变,其余每一位都取反。

继续进行下列计算
  1 - 2
= 1 + (-2) 
=(0000 0001)原 + (1000 0010)原
=(0000 0001)反 + (1111 1101)反
=(1111 1110)反
=(1000 0001)原
= -1

 1 - 2 是计算对了,但当我们计算 1 - 1 时

继续进行下列计算
  1 - 1
= 1 + (-1) 
=(0000 0001)原 + (1000 0001)原
=(0000 0001)反 + (1111 1110)反
=(1111 1111)反
=(1000 0000)原
= -0

此时我们得到一个结果是 -0 ,0已经有 0000 0000 来表示了,那多出来的 -0 怎么解决呢 ,此时便要继续引入 补码 的概念

补码:补码的表示与符号位有关。

          正数的补码是其原码本身。

          负数的补码是其原码的反码再加一。

此时我们继续解决以下计算
  1 - 1
= 1 + (-1) 
=(0000 0001)原 + (1000 0001)原
=(0000 0001)反 + (1111 1110)反
=(0000 0001)补 + (1111 1111)补
=(0000 0000)补
=(0000 0000)原
= 0

从而得出正确的计算结果,由此我们可以得知 计算机的底层都是补码进行存储。

三、由byte引申的数据类型范围表示

此时我们再回到一开始提到的探究各个数据类型所表示的范围。

由byte来举例子,byte是计算机中的基础单位,也是最小的储存单位。1 byte = 8 bit

显而易见,我们可以计算得到byte类型所表示的范围中的最小值和最大值
  最小值
  1111 1111
= -(2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0)
= - (64 + 32+ 16 + 8 + 4 + 2 + 1)
= - 127

  最大值
  0111 1111
= +(2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0)
= + (64 + 32+ 16 + 8 + 4 + 2 + 1)
= + 127

由于补码的存在,已经有一个(0000 0000) +0 ,用来表示0,而多出来的(1000 0000)-0 就视为最小值,作为-128 存在。

实际上 -128 在8位比特下是没有明确的机器码进行表示,只是将(1000 0000)这一特殊的存在来作为最小值,即 -128。

所以8比特位的整数的最小值是 -128 , 所以 byte 的取值范围就是(-128 ~ +127),也可以写作(-2^{7} ~ 2^{7}-1)。

由数据类型byte可得:

整数类型:

字节型 byte 占 1个字节,即 8个比特位,表示范围是(-2^{7} ~ 2^{7}-1)。

短整型 short占 2个字节,即 16个比特位,表示范围是(-2^{15} ~ 2^{15}-1)。

整型 int占 4个字节,即 32个比特位,表示范围是(-2^{31} ~ 2^{31}-1)。

长整型 long占 8个字节,即64个比特位,表示范围是(-2^{63} ~ 2^{63}-1)。

浮点数类型:

单精度浮点数 float占4个字节,双精度浮点数 double占8个字节

由于浮点数与整数在内存中的储存方式不同,不能单纯用2^{n}的形式计算范围,所以知道有范围,但一般不关注。

字符类型:

字符型 char占 2个字节,表示16位Unicode字符,表示范围是(0 ~ 65535)。

布尔类型:

布尔类型 boolean没有明确规定内存占用,范围只有 true 和 false。

四、引申Question:为什么 127 + 1 = -128 ?

1. 通过 127 + 1 进行解释 

我们已知,计算机内部的计算都是使用的二进制补码来进行计算的。
127的补码是(0111 1111)
1的补码是(0000 0001)
  127 + 1
=(0111 1111)补 + (0000 0001)补
=(1000 0000)补 
而二进制补码(1000 0000)所对应的十进制数就是 -128
所以 127 + 1 = -128

2. 通过 127 + 2 进行解释 

我们已知,计算机内部的计算都是使用的二进制补码来进行计算的。
127的补码是(0111 1111)
2的补码是(0000 0010)
  127 + 2
=(0111 1111)补 + (0000 0010)补
=(1000 0001)补 
而二进制补码(1000 0001)所对应的十进制数就是 -127
所以 127 + 2 = -127
则   127 + 1 = -128

3. 通过代码解释

public class HelloWorld {
    public static void main(String []args) {
		byte a = 127;
		a++;
       System.out.println(a);
    }
}

输出 -128
Win11 C盘瘦身终极指南:哪些能删/能移/不能碰?附详细目录清单 本文提供了一份详细的Win11 C盘瘦身终极指南,清晰区分了可安全删除、适合迁移以及绝对不能触碰的系统目录。文章不仅列出了具体的文件夹清单与操作建议,还介绍了使用符号链接和Robocopy进行安全迁移的高阶方法,并附带了自动化脚本,帮助用户从根本上解决C盘空间不足的问题,同时确保系统稳定。 阅读详情

相关推荐

ITK-snap医学图像标注方法(超级详细)——保姆级

医学3D图像标注方法,非常详细,保姆级

jialiyk的博客 3万+

计算机系统术语

1、位(bit) 来自英文bit,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位,11010100是一个8位二进制数。一个二进制位只可以表示0和1两种状态(21);两个二进制位可以表示00、01、10、11四种(22)状态;三位二进制数可表示八种状态(23)……。 2、字节(byte) 字节来自英文Byte,音译为“拜特”,习惯上用大写的“B”表示。 字节是计...

weixin_33709364的博客 2836

ArcGIS Pro 3.0实战:5分钟搞定GDB批量转SHP的Python脚本(附常见错误修复)

本文详细介绍了在ArcGIS Pro 3.0中使用Python脚本将地理数据库(GDB)中的要素类批量转换为Shapefile(SHP)格式的实战方法。文章提供了从基础到增强的完整脚本,重点解决了中文路径报错、字段名截断和属性表乱码等常见问题,并分享了错误处理与编码修复技巧,帮助用户高效、准确地完成数据格式转换与交换。

happy2的博客 766

字节与字符的区别

字节与字符的区别 字节(Byte)是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位。 字符(Character)计算机中使用的字母、数字、字和符号,比如’A’、‘B’、’$’、’&'等。 一般在英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示。 字节与字符: ASCII 码中,一个英文字母(不分大小写)为一个字节,一个中文汉字为两个字节。 UTF-8 编码中,一个英文字为一个字节,一个中文为三个字节。 Unicode 编码中,一个英文为

m0_53316600的博客 802

思科模拟器CIsco Packet Tracer利用三层交换机实现VLAN间路由

版权声明:如果对大家有帮助,大家可以自行转载的。 1.技术原理: 三层交换机具备网络层的功能,实现 VLAN 相互访问的原理是:利用三层交换机的路由功能,通过识别数据包的 IP 地址,查找路由表进行选路转发,三层交换机利用直连路由可以实现不同 VLAN 之间的相互访问。三层交换机给接口配置 IP 地址。采用 SVI(交换虚拟接口)的方式实现 VLAN 间互连。SVI 是指为交换机中的VLAN 创建...

qq_37992321的博客 1万+

Frida提取Cocos游戏XXTEA密钥的实战方法论

XXTEA是一种轻量级分组加密算法,广泛用于移动端游戏通信保护;其128位密钥的安全性直接决定网络协议逆向成败。在Cocos引擎生态中,密钥常以静态常量、JNI动态传递或Native运行时派生三种形态存在,导致传统静态分析失效。Frida凭借跨Java/Native注入能力与内存实时观测优势,成为捕获密钥‘出生瞬间’的关键工具——尤其适用于hook xxtea_encrypt函数入口、监控JNI参数传递、设置内存断点追踪派生过程等场景。本文聚焦Cocos2d-x与Cocos Creator项目,覆盖从密钥识

weixin_33509600的博客 416

bit与byte的遐想

通过bit与byte的区分,引申出Java的基本数值类型的在计算机底层存储方式。搞懂数值范围,溢出处理

u013921288的专栏 2296

用Python+PyTorch实现DQN无人机避障:从环境搭建到实战训练(附完整代码)

本文详细介绍了如何使用Python和PyTorch框架,基于深度强化学习中的DQN算法,实现一个无人机自主避障系统。内容涵盖从自定义环境搭建、DQN智能体核心算法实现,到完整的训练流程与超参数调优,并提供了可视化演示与进阶优化方向,为开发者提供了从理论到实践的完整指南。

kubernetes8ctl的博客 639

八个基本数据类型及长度

8种基本数据类型为:4种整形:byte,short),int,long2种浮点类型:float,double1种Unicode编码的字符单元的字符型:char1中Boolean类型:boolean 8中类型所占字节和位数和取值范围如下: 类型 占用字节 占用位数 数值长度 byte 1 8 -128~127(-2的7次方到2的7次方-1) ...

Vpn_zc的博客 2万+

Halcon那些事:Halcon缺陷检测检测印刷数字完整性

创建模板 create_shape_model模板匹配 find_shape_model。

十多年IT经验,专注机器视觉,智能制造半导体行业 764

⑩电子产品拆解分析-家用无线遥控开关433Mhz

①免布线随意贴,装上就能使用解决单线开关烦恼;②遥控配对简单,无线通讯距离长,信号可穿墙;

a6662580的博客 4689

基本数据类型

如何使用基本数据类型,取值范围多少

qq_49217175的博客 7003

【Docker安装】OpenEuler系统下部署Docker环境

【Docker安装】OpenEuler系统下部署Docker环境

jks212454的博客 4189

Day01_变量和数据类型(注释,关键字,标识符,数据类型,字面量,变量,常量,进制,计算机存储单位,Java的基本数据类型的存储范围,计算机如何表示数据)

在JVM内存中,一个字符占2个字节,Java使用Unicode字符集来表示每一个字符,即每一个字符对应一个唯一的Unicode编码值。在JVM内存中,一个字符占2个字节,Java使用Unicode字符集来表示每一个字符,即每一个字符对应一个唯一的Unicode编码值。引用数据类型的变量:存储地址值,即对象的首地址。案例需求:随机产生两个[0,1)的小数,分别用它表示两个圆的半径,然后输出对应圆的面积和周长的值。案例需求:随机产生一个[0,1)的小数,用它表示某个圆的半径,然后输出圆的面积和周长的值。

小丁的博客 1130

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java基本数据类型 及 位操作

最近在笔试时,经常遇到一些与基本数据类型有关的问题,比如他们的长度 所占的字节数目啊,以及相应的为操作啊,所以,这次来做一下总结 ;     四种基本整数数据类型 : 所占字节数目按 2^n增长..... 注意,计算计数范围时,最高位表示的符号位!    注意 : 如果超过了他们范围,怎么办,见例子!      剩下的就是 float , double , char , blooea

kainever的专栏 429

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

震惊,基本数据类型竟然是这样表示决定范围的!

相信很多人对下面的这张图并不陌生,详细的记录着每个数据类型的内存占用字节数和其取值的范围。 …那么他们是如何通过字节数来确定其范围的呢? 我们只需记下面这句话: 一字节表示八位,即:1byte = 8 bit,bit存储内容是0和1 以byte来举例子,一个byte有8个bit,一共可以存储8个0或1,所以其最大值为8个bit都是1的时候。 1 1 1 1 1 1 1 1 也许你会有些疑惑,1 1 1 1 1 1 1 1转换成十进制不是255吗?怎么byte的最大值是127呢? 了解为什么之前,我们首先

weixin_44824500的博客 1013

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java的8种基本数据类型-附取值范围的计算逻辑

1、byte类型占1个字节,1字节=8bit,而计算机底层是二进制(0和1)的,因此可以得知能表示byte的数据区间就是[00000000,11111111],即[0,2^8-1],由此可知该区间含有2^8-1=255个数正数,还有一个0,所以一共是256个数。所以就需要将255个正数分一半到负数去,然后由于255是奇数,总有一方会多一个,最后就是给负数分多了一个,所以最后是[-128,127]!-0或+0都表示0是没必要的,其一0没有正负号,其二同一个数字不需要用两种二进制表示数,浪费资源。

qq_73778722的博客 519

JAVA基本数据类型及其包装类

一、背景 JAVA基本数据类型几乎每天都会用到,但是你真的了解其在计算机中是如何表示的吗?每一种基本数据类型的取值范围究竟是如何计算得到的?为什么float型所占字节数为4,但比同样占4个字节的int型的取值范围更为广阔?为什么float型和double型变量会有精度丢失的问题?这些问题都值得我们去细细探究一下。 二、JAVA基本数据类型 基本数据类型 最小值 ...

吾日三省吾身 459

C++数据类型及所占字节数与它取值范围的关系

数据类型 类型 关键字 布尔型 bool 字符型 char 整型 int 浮点型 float 双浮点型 double 无类型 void 宽字符型 wchar_t 数据类型的大小 类型 位 范围 char 1 个字节 -128 到 127 或者 0 到 255 unsigned char 1 个字节 0 到 255 signed char 1 个字节 -128 到 127 int 4 个字节 -2147483648 到 214748364

陨星落云的博客 1213

数据类型的取值范围

在了解取值范围之前先看看每个字节所能占用几个比特(bit)位,以及字节(byte)为例,说说其取值范围的原理。(取值范围在最后) 1. 字节(byte): 1 byte = 8 bit 【1 字节 = 8 比特位 】一个比特位表示一个二进制位:1 / 0 1 KB = 1024 B 1 MB = 1024 KB 1 GB = 1024 MB 1 TB = 1024 GB 1...

weixin_45714733的博客 2897

003-Java基本数据类型

计算机内存 计算机内存是有限的,你的电脑,各种类型的服务器,包括你的手机内存都是有限的,内存不足,你的电脑就会很慢,这是你最直观的体验。计算机中几乎所有的应用都会使用内存,你在开机后系统应用就已经使用了部分内存了。 计算机中的存储单位换算 在计算机内部,信息都是釆用二进制的形式进行存储、运算、处理和传输的。 基本储存单元 位(bit):二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位。 字节(Byte,B):计算机中数据的基本单位,每8位组成一个字节。各种信息在计算机中存储、处理至少

这个需求,做不了 323

2.基本数据类型

文章目录1.数据类型1.1基本分类1.2常见的进制1.3进制之间的转换1.4==单个字节表示的整数范围(重重之中)==1.5整数类型 1.数据类型 1.1基本分类 ​ 在java语言中将数据类型分为两大类: ​ (1)基本数据类型 ​ byte、short、int、long、float、double、char、boolean ​ (2)引用数据类型 ​ 数组、类、接口、枚举、标注等 ...

ZYN的博客 453

float16,fp16计算、表示范围、数据精度/间隔详解

Float16,也被称为FP16或半精度浮点数,是一种用于表示浮点数的数据类型,在计算机科学中广泛应用于各种领域。

爱串门的小马驹博客 1万+

Java的基本数据类型各占多少个字节

只有8种基本类型可以算.其他引用类型都是由java虚拟机决定的自己不能操作 表示范围公式:(-2的n-1次方) 至 (2的n-1次方 - 1), 因为第一位用于当做符号位,第1个bit表示符号,0表示正数,1表示负数 基本类型 占的内存(1字节是8位) 表示范围 byte 1字节 -128至127:-2的7次方至2的7次方-1 short 2字节 -32768至3

naiwenw的博客 4085

JAVA数据类型取值范围

一.byte byte数据类型占8位,也就是一个字节。 1000 0000 ~ 0111 1111 也就是 -2^-7 ~ 2^7-1 -128 ~ 127 注意:最高为是符号位 二.short short数据类型占16位,也就是两个字节。 1000 0000 0000 0000 ~ 0111 1111 1111 1111 也就是 -2^-15 ~ 2^15-1 -32768 ~ 32767 三....

zsmsxbl的博客 371

C语言的数据类型——基本数据类型

快速、高效了解C语言的基本数据类型。

2401_83968284的博客 1745
上一篇: JavaSE——02.初识数据类型&变量
Ghosdriver
博客等级 码龄4年 32粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值