算法与数据结构——基本数据类型与编码

news/2024/11/18 11:50:53/文章来源:https://www.cnblogs.com/1873cy/p/18374171

基本数据类型

基本数据类型是计算机CPU可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种

  • 整数类型byteshortintlong
  • 浮点数类型floatdouble,用于表示小数
  • 字符类型char,用于表示各种语言的字母、标点符号甚至表情符号等。
  • 布尔类型bool,用于表示“是”与“否”判断。

基本数据类型以二进制的形式存储在计算机中。一个二进制位即1比特。在绝大多数现代操作系统中,1字节(byte)由8bite(bit)组成。

基本数据类型的取值范围取决于其占的空间大小,下面以Java为例。

  • 整数类型byte占用1字节=8比特,可以表示28个数字
  • 整数类型int占用4字节=32比特,可以表示232个数字

下表列举了各种基本数据类型的占用空间、取值范围和默认值。

类型 符号 占用空间 最小值 最大值 默认值
整数 byte 1 字节 -27(-128) 27 - 1(127) 0
short 2 字节 -215 231 - 1 0
int 4 字节 -231 231 - 1 0
long 8字节 -263  263 - 1 0
浮点数 float 4 字节  1.175 * 10-38 3.403 * 1038 0.0f
double 8 字节 2.225 * 10-308 1.798 * 10-308 0.0
字符 char 2 字节 0 216-1 0
布尔 bool 1 字节 false true false

字符char的大小在C和C++中为1字节。

基本数据类型提供了数据的“内容类型”,而数据结构提供了数据的“组织方式”。

 

数字编码

在前面的取值范围中,所有整数类型能够表示的负数都比正数多一个,例如bute的取值范围是[-128,127]。其原因涉及原码、反码、补码的相关知识。

  • 原码:我们将数字的二进制表示的最高位视为符号位,其中0表示正数,1表示负数,其余位表示数字的值。
  • 反码:正数的反码与其原码相同,负数的反码是对其原码除符号位外的所有位取反。
  • 补码:正数的补码与其原码相同,负数的补码是在其反码的基础上加1。

注意:数字是以“补码”的形式存储在计算机中的

原码(sign-magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原码下计算 1 + ( - 2),得到的结果是 - 3,这显然是不对的。

为解决此问题,计算机引入了反码。如果我们先将原码转换为反码,并在反码下计算 1 + (- 2),最后将结果从反码转换回原码,则可得到正确结果 -1。

另一方面,数字零的原码有 +0 和 -0 两种表示方式。这意味着数字零对应两个不同进制的二进制编码,这可能会带来歧义。与原码一样,反码也存在正负零歧义问题,因此计算机进一步引入了补码。下面是负零的原码、反码、补码的转换过程。

在负零的反码基础上加1会产生进位,但byte类型的长度只有8位,因此溢出到第9位的1会被舍去,这样,负零的补码为 0000 0000,与正零的补码相同。这意味着在补码表示中只存在一个零,正负从而得到解决。

注意:byte类型的取值范围是[-128, 127],多出来的一个负数-128是如何得到的?

我们注意到,区间[-127, +127]内的所有整数都有对应的原码、反码和补码,并且原码和补码之间可以互相转换。

然而,补码1000 0000 是一个例外,它并没有对应的原码。根据转换方法,我们得到该补码的原码为 0000 0000。这显然是矛盾的,因为该原码表示数字0,它的补码应该是自身。计算机规定这个特殊的补码1000 0000 就代表 -128。实际上(-1)+(-27)在补码下的计算结果就是 -128 。

事实上,计算机内部的硬件电路主要是基于假发运算设计的。这是因为加法运算相对于其他运算(比如乘法除法或减法)来说,硬件实现起来更简单,更容易进行并行化处理,运算速度更快。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785491.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国电信公布2024年中期业绩!

2024年上半年,中国电信紧抓发展机遇,完整准确全面贯彻新发展理念,坚定履行建设网络强国和数字中国、维护网信安全责任,持续深入实施云改数转战略,加快推动数字信息基础设施智能化、绿色化演进升级,加大高质量产品和服务供给,加速战略新兴业务规模拓展,全面深化改革开放…

这是一款轻量存储黑科技!

近日,天翼云联合InfoQ举办了以“新存储,更轻量”为主题的线上技术分享会。天翼云存储产品线总监潘亚莲以“轻量级存储集群控制器HBlock的设计理念与场景实践”为主题,讲解了HBlock在产品理念、价值主张、应用场景等方面的内容。近日,天翼云联合InfoQ举办了以“新存储,更轻…

xlsx-js-style前端组装表格数据下载到本地

1.数据格式: 对象:key/valueconst data1 = {合同 主体信息:{\n "合同编号": "FWTsAEY-S1T-2023-01",\n "项目编号": "FTCG2023000265A",\n "项目名称": "福田区第二人民医院食堂服务采购项直",\n "总计…

Cookie,Session Filter,Listener详解

HTTP请求的无状态性HTTP的无状态性是其一个重要的特征,指的是HTTP协议本身并不保留客户端与服务器交互的历史信息,换而言之,即每次的HTTP请求都是独立的,服务器在处理每一个请求时都不会记住前一个请求的状态无状态的含义独立性:每次的HTTP请求都是独立的,不依赖于之前的请求,即…

探索风扇产品模型的3D可视化魅力

在这个科技日新月异的时代,每一个细微的创新都能为我们的生活带来前所未有的便捷与享受。今天,就让我们一起踏入一场视觉与科技的盛宴,探索风扇产品模型如何通过3D可视化技术,重新定义家居生活的舒适与美学。想象一下,在炎炎夏日,你无需亲临实体店,只需轻点鼠标或滑动指…

Tree组件的快速定位更新节点的状态,以及修改节点的数据属性等操作

当我们点击树节点的时候我们常常只能获得树的id,那么我么如何获快速定位到树节点的内容呢,除此之外,当树已经存在时,但是缺少我们想要的内容时,我们想在树节点上添加我们需要的额外的内容时该怎么办,那么就是用以下方法可以快速定位到我们需要的节点并可以快速添加内容当…

供应链管理系统(SCM) —— 企业物流的智能枢纽

SAP 供应链管理系统以打造数字化和集成化的供应链管理平台为使命,将传统的仓储管理系统、制造执行系统、产品管理系统等软件进行升级和上云管理,为企业提供面向客户、合作伙伴及员工的数字化SCM系统平台。SAP SCM系统从设计到运维,全面优化供应链,规避风险 供应链管理模式日…

Flannel IPsec 模式

Flannel IPsec 模式Flannel IPSec 模式 一、环境信息主机 IPubuntu 172.16.94.141软件 版本docker 26.1.4helm v3.15.0-rc.2kind 0.18.0clab 0.54.2kubernetes 1.23.4ubuntu os Ubuntu 20.04.6 LTSkernel 5.11.5 内核升级文档二、安装服务 kind 配置文件信息 $ cat install.sh#…

[Mysql]执行一条语句的过程

执行一条 select 语句,期间发生了什么? 学习 SQL 的时候,大家肯定第一个先学到的就是 select 查询语句了,比如下面这句查询语句: // 在 product 表中,查询 id = 1 的记录 select * from product where id = 1;但是有没有想过,MySQL 执行一条 select 查询语句,在 MySQL …

Free Online 1080P Youtube Video Downloader All In One

Free Online 1080P Youtube Video Downloader All In One 免费在线 1080P Youtube 视频下载器IELTS 雅思Free Online 1080P Youtube Video Downloader All In One免费在线 1080P Youtube 视频下载器https://yt5s.io/en93https://yt5s.biz/enxj100/ demosIELTS 雅思https://www.…

基于UltraScaleKU115的高性能PCIe3.0 x8-FMC+接口卡

基于UltraScaleKU115的高性能PCIe3.0 x8-FMC+接口卡,是一款高性能的PCIe 3.0 X8板卡。主控芯片采用Xilinx 公司Kintex UltraScale系列FPGA 家族中的XCKU115-FLVA1517(兼容XCKU085-FLVA1517)。板卡含有2 组共8GB(单组4GB)的DDR4 内存颗粒,支持JTAG 口和QSFP+光纤接口以及F…

数字集成电路设计实践 IIC-Slave接口芯片的全流程设计

数字集成电路设计实践 IIC-Slave接口芯片的全流程设计 一、 芯片设计方案 IIC原理 1. I2C协议 I2C协议由Philips公司推出。 1.1. 端口名称及含义 标准I2C只有2根信号线。 SCL:Serial CLock:串行时钟线,由主机产生并分享给从机。 SDA:Serial DAta:串行数据线,连接在主从机…