热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在其他类型上使用特定数字类型的含义是什么

如何解决《在其他类型上使用特定数字类型的含义是什么》经验,为你挑选了1个好方法。

将整数存储为特定数字类型(uint8,int16,uint32,int64等)的内存含义是什么?我知道每种类型都可以采用的整数范围,但是使用适当的类型是否可以达到一定的内存效率?

例如,在Golang,它“似乎”更有效的人的年龄存储为UINT8而非单元(根据其规范这相当于UINT32或UINT64 https://golang.org/ref/spec#Numeric_types)



1> icza..:

固定大小的整数

固定大小的整数需要精确的内存量。对单个变量使用较小的整数类型“在此处和那里”,您将仅获得少量内存(如果有)。同样,当用作结构字段类型时,由于隐式填充,您可能再也不会获得任何好处。

当您使用固定大小的整数作为(大)切片或数组的元素类型时,内存增益可能会显着且可观。

使用固定大小整数的另一个(可能更重要)原因可能是要传达您存储在整数中的内容。您可以很好地使用int32int64键入来存储字节,但是明显的浪费是,它们不传递存储在其中的数据的有效范围

另一点是效率。您总是可以int64代替其他有符号整数类型使用,但是在某些体系结构上执行运算int64可能需要多次寄存器操作,因此速度相当慢。同样,rune类型(的别名int32)清楚地表明您打算将其用于unicode代码点。

另一点是一致性。如果您习惯int32将某物建模在一个地方,则应坚持并在所有地方使用相同的类型。这在Go中比在其他语言中更重要,因为Go的类型系统是严格的(比大多数其他语言的类型更严格),这意味着如果您具有type的值int32,则不能在int64没有显式的情况下将其分配给type 的变量,反之亦然转换。

int 与固定大小的整数

类型intuint不是固定大小,而是根据规范:数字类型:

uint     either 32 or 64 bits
int      same size as uint

当使用int时,针对不同的体系结构,编译器可能会生成更多优化的代码。以32位架构为目标时,通常 int为32位;以64位架构为目标时,通常为64位。这意味着的大小int将与目标体系结构的寄存器大小匹配,因此可以通过单个寄存器操作有效地执行整数运算。int64例如,如果使用,则可能需要执行多个(寄存器)操作才能在32位体系结构上执行单个整数操作。

我喜欢认为int是一种整数类型,用于以其认为合适的最佳方式描述和传达Go运行时数据结构的某些部分或组件。例如,索引数组或切片或描述其大小int是要使用的“自然”类型。

规格:长度和容量:

内置函数lencap接受各种类型的参数并返回type的结果int。该实现可确保结果始终适合int。例如,int建议或强制为切片或数组建立索引或描述其长度和容量是“自然”类型。

for range对数组,切片或string值使用至少一个迭代变量的语句时,迭代变量(“索引”)的类型为int

另请注意,Rob Pike已为Go 2提出了将其更改int为任意精度的建议。建议:规范:将int更改为任意精度


推荐阅读
  • [线段树|平衡树|树状数组]LightOJ - 1087 - Diablo
    1087-DiabloPDF(English)StatisticsForum ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 本文介绍了使用Python编写购物程序的实现步骤和代码示例。程序启动后,用户需要输入工资,并打印商品列表。用户可以根据商品编号选择购买商品,程序会检测余额是否充足,如果充足则直接扣款,否则提醒用户。用户可以随时退出程序,在退出时打印已购买商品的数量和余额。附带了完整的代码示例。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • ProblemDescriptionXiaoAlivesinavillage.Lastyearfloodrainedthevillage ... [详细]
  • Imtryingtomakeawebsiteinwhichauserinputsdetailsononescreen,andtheyarepostedonto ... [详细]
author-avatar
高桥惜员_136
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有