gpt4 book ai didi

integer - 我们如何理解 Julia 中十六进制数与十进制数的加法?

转载 作者:行者123 更新时间:2023-12-04 01:03:27 26 4
gpt4 key购买 nike

我最近获得了 HDF5 数据文件,其中包含在 julia 中读取时以十六进制格式显示的整数数组(使用 HDF5 包)。为了获得十进制格式的数字,我从一位同事那里学到了这个技巧:

julia> a = 0x000038f9
0x000038f9

julia> b = a + 0
14585

我想了解 Julia 在这里做什么。为什么/如何将十六进制格式数字与十进制格式数字相加的结果是十进制格式数字。官方的 julia 文档似乎并没有对这种行为说太多。是否有更透明的方式来执行此转换?谢谢。

最佳答案

这不是关于十六进制和十进制数,而是关于有符号和无符号数。 Int(以及类似的类型,如 Int8BigInt 等)可以存储正数和负数,并以十进制打印,因为这是最常用的数字系统人们使用。它们以二进制形式存储,就像几乎所有编程语言中的数字一样。

UInt(和 friend )表示无符号数(它们必须大于 0)。它们以十六进制打印,因为它们的主要用途之一是用于按位运算(逻辑掩码、涉及重新解释 Float64 的黑魔法等)。因此,能够以十六进制形式查看它们是很有用的,因为这使人们更容易看到这些位的布局方式(因为十六进制的每个数字只有 4 位)。

在 Julia 中 Int+UInt=UInt,但是 Int+UInt32=Int(在 64 位系统上因为 Int 是 64 位) .因此,当您将 UInt32 添加到 Int 时,julia 会进行数学计算(不需要基本转换,内部所有内容都是二进制的),并显示 Int 结果。

关于integer - 我们如何理解 Julia 中十六进制数与十进制数的加法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67326878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com