问题标签 [signed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 无符号数与有符号数作为索引
在.Net 中使用有符号数作为索引的理由是什么?
在 Python 中,您可以通过发送负数从数组末尾开始索引,但在 .Net 中并非如此。.Net 稍后添加这样的功能并不容易,因为它可能会在索引时使用特殊规则(是的,一个坏主意,但我猜它会发生)破坏其他代码。
并不是说我曾经需要索引超过 2,147,483,647 大小的数组,但我真的不明白他们为什么选择有符号数字。
可能是因为在代码中使用带符号的数字更正常吗?
编辑:我刚刚找到这些链接:
Edit2:好的,Matthew Flaschen 发布的线程中还有其他几个很好的理由:
- 历史原因,因为它是一种类似 c 的语言
- 与 c 互操作
lotus-notes - 如何在 Lotus Notes 中提取谁签署了受控访问部分?
我想将 Lotus Notes 数据库的内容导出为 XML。在生成的文件中,我想查看谁签署了特定的受控访问部分。我知道没有导出数字签名。我只需要知道谁签署了该部分以及他/她何时签署。
我可以通过什么方式使用 DXL Exporter 导出签署该部分的姓名和日期?我要寻找什么?
mysql - 共识?MySQL,有符号 VS 无符号主键/外键
我已经看到了一些关于现在每个人在签名和未签名键值方面都在做什么的线程。似乎 unsigned 是最佳的,因为它允许以相同的成本获得两倍的行数。签名密钥有什么好处吗?
有没有标准的共识?似乎已签名是答案,因为“一直都是这样”
python - python - 如何使用python在二进制补码中将有符号整数打印为十六进制数?
我有一个负整数(4 个字节),我想要它的二进制补码表示的十六进制形式。
但我想看“FF……”
c++ - C++ 读取带符号的 32 位整数值
我有一个名为 s32 的多字节原始类型,我想从字节数组中读取它。
规格如下:
它是一个 32 位有符号整数值,以 little-endian 顺序存储。
负整数使用 2 的补码表示。
它根据大小使用 1 到 5 个字节。每个字节将其低七位贡献给该值。如果设置了高(第 8 位)位,则下一个字节也是值的一部分。
应用符号扩展:传播编码的最后一个字节的第七位以填充解码值的 32 位。
在 U32 的情况下 - 无符号 32 位我想出了这个(欢迎任何评论!)但不确定如何为 S32 修改它。
谢谢大家!
c - 指针(地址)可以是负数吗?
我有一个函数,我希望能够为失败和未初始化返回特殊值(它返回成功时的指针)。
目前它返回NULL
失败和-1
未初始化,这似乎工作......但我可能在欺骗系统。IIRC,地址总是积极的,不是吗?(尽管由于编译器允许我将地址设置为 -1,这似乎很奇怪)。
[更新]
我的另一个想法(如果 -1 有风险)是将malloc
char@
设置为全局范围,并将该地址用作哨兵。
numbers - 算术溢出
为什么使用二进制补码将正数和负数相加时不会发生算术溢出。如果可以请提供一个带有 8 位有符号整数(字节)的示例。
c++ - 如果我们添加安全的有符号/无符号比较 C/C++,它会破坏语言或现有代码吗?
在阅读了这个关于有符号/无符号比较的问题之后(我会说他们每隔几天出现一次):
我想知道为什么我们没有正确的有符号无符号比较,而是这个可怕的混乱?从这个小程序中获取输出:
用我的标准编译器(gcc,64位)编译,我得到这个:
如果我编译为 32 位,结果是一样的,除了:
“怎么样?” 所有这些都很容易找到:只需转到 C99 标准的第 6.3 节或 C++ 的第 4 章,然后挖掘描述操作数如何转换为通用类型的子句,如果通用类型重新解释负值,这可能会中断。
但是“为什么?”呢?正如我们所见,'<' 在 50% 的情况下会失败,它还取决于类型的具体大小,因此它取决于平台。以下是需要考虑的几点:
转换和比较过程并不是最小惊喜规则的主要示例
我不相信那里有代码,它依赖于不是由恐怖分子编写的
(short)-1 > (unsigned)1
命题。当你在 C++ 中使用模板代码时,这一切都很糟糕,因为你需要类型特征魔法来编织一个正确的“<”。
毕竟,比较不同类型的有符号和无符号值很容易实现:
如果可以静态证明 a>=0,则预检查很便宜,也可以由编译器优化掉。
所以这是我的问题:
如果我们添加安全的有符号/无符号比较 C/C++,它会破坏语言或现有代码吗?
(“它会破坏语言吗”意味着我们是否需要对语言的不同部分进行大量更改以适应这种变化)
更新: 我已经在我的旧 Turbo-C++ 3.0 上运行了这个并得到了这个输出:
为什么在(signed char)-1 < (unsigned char) == 0
这里?
32bit-64bit - 32位无符号、有符号、64位差异的实际例子
我是一个相当新的程序员,我想知道是否有人可以给我一个实用的解释/示例,说明使用有符号、无符号和 32 位与 64 位之间的区别和用途?
即,我阅读了一篇关于 Twitter 去年如何让开发人员切换到 64 位的文章,但我不确定其中的原因和具体性质。
谢谢!
c - C 中的无符号和有符号值(输出)
的价值是y
多少?这是怎么回事?