问题标签 [unsigned]
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.
c# - 确保 unsigned int/long 始终在 C# 的检查上下文中执行
有没有人觉得奇怪的是 uint 和 ulong 的默认上下文未检查而不是检查,因为它们旨在表示永远不会为负的值?
因此,如果某些代码试图违反该约束,在我看来,自然和首选的行为将是抛出异常而不是返回最大值(这很容易使重要的数据片段处于无效状态并且无法恢复。 .)。
是否存在可应用于任一类/程序集的现有属性,以便它始终在检查的上下文中执行算术运算?我正在考虑自己写一个(作为使用 PostSharp 的一个方面),但如果已经有一个就好了。
非常感谢,
language-agnostic - 无符号以防止负数
希望我能让这个不主观
unsigned
事情是这样的:有时,在固定类型的语言中,我通过使用诸如unsigned int
orunsigned double
等类型将方法和函数的输入限制为正数。
然而,大多数图书馆似乎并不这么认为。以 C# 为例string.Length
。它是一个整数,即使它永远不会是负数。C/C++ 也是如此:sqrt
输入是 anint
或 a double
。我知道这是有原因的……例如,您的参数可能是从文件中读取的,并且(不知道为什么)您可能更喜欢将值直接发送到函数并稍后检查错误(或使用 try-catch 块)。
所以,我假设库比我自己的代码设计得更好。那么反对使用无符号数表示正数的原因是什么?是因为当我们转换回有符号类型时溢出?
c - 为什么 unsigned int 包含负数
我对无符号数字(无符号短整数、整数整数和长整数)的了解,它仅包含正数,但以下简单程序成功地将负数分配给无符号整数:
输出是:
The subtraction of 10 from 20 is -10
c - 引用的 JNA 无符号整数给出了奇怪的结果
我目前正在尝试使用 JNA 访问 C API。但是我对通过引用传递的无符号整数参数有疑问。
所以这是有问题的C函数:
在Java中我有:
这是我使用它的方式:
这给了我:
11000100110110010011000000(51602624)
虽然它应该是0。
我使用 JNA-API 的方式有问题吗?
谢谢!
objective-c - 如何在 Cocoa 中将 NSString 转换为无符号整数?
我的应用程序收到一个NSString
包含unsigned int
. NSString 没有[myString unsignedIntegerValue];
方法。我希望能够在不破坏字符串的情况下从字符串中取出值,然后将其放入NSNumber
. 我正在尝试这样做:
unsigned int
由于我必须将其转换为第一个,因此上述内容是否可能会“切断”一个大的结尾NSInteger
?或者看起来可以使用吗?如果它会切断它的结尾,那么下面的(我认为有点混乱)怎么样?
谢谢你的尽心帮助!:)
c++ - 获取没有显式特征的整数模板参数的有符号/无符号变体
我希望定义一个模板类,其模板参数将始终为整数类型。该类将包含两个成员,一个是 type T
,另一个是 type 的无符号变体T
——即 if T == int
, then T_Unsigned == unsigned int
。我的第一直觉是这样做:
但它不起作用。然后我考虑使用部分模板专业化,如下所示:
只要您UnsignedType
对每种整数类型进行部分专业化,这就是有效的。这是一些额外的复制粘贴工作(斜线明智地使用宏),但可以使用。
但是,我现在很好奇 - 是否有另一种方法可以确定整数类型的有符号性和/或使用类型的无符号变体,而不必手动定义每个类型的 Traits 类?或者这是唯一的方法吗?
c++ - 为什么在 C++ 表达式中使用无符号整数时会出错?
给定以下一段(伪 C++)代码:
在 (col - hw) 为负的地方, foo 的值在数组的一半处被搞砸了。我想因为 col 是 int 并且首先出现,所以表达式的这一部分被转换为 int 并变为负数。不幸的是,显然它没有,我得到一个无符号值的溢出,我不知道为什么。
我应该如何解决这个问题?对整个或部分表达式使用强制转换?什么类型的转换(C 风格或 static_cast<...>)?使用演员表是否有任何开销(我需要它快速工作!)?
编辑:我将所有无符号整数都更改为常规整数,但我仍然想知道为什么在这种情况下会溢出。
c# - DataType 用于存储长序列号(10 字节)
我们有一个设备,它有一个 10 字节的序列号,必须将其读入我们的应用程序并存储到 .net 数据类型中。在设备中,它被存储为一个无符号的 10 字节(80 位)数字。我不希望我们会对这个数字执行任何数学运算,而只会将其显示给用户。
.NET 框架没有内置的 UNIT128来存储此数据类型。我对存储此数据类型的建议是创建一个 10 元素字节数组并将数据读入此数组。这个问题有更好的解决方案吗?
注意:我在这个问题中看到GUID 是一个 128 字节的有符号整数,但以这种方式使用 GUID 似乎是个坏主意。还有其他建议吗?
c# - 如何将 sbyte 值存储在字节变量中?
我正在用 C# 编程。我有一个 sbyte 变量。假设它拥有 -10,二进制是 11110110。我想将此值的二进制表示形式存储在字节变量中。因此,当我将 sbyte (-10) 复制到字节时,字节值将为 245。如果我尝试使用 Convert.ToByte(sbyte) 它会抛出一个有意义的异常。我真的不想从一种类型转换为另一种类型,而是进行按位复制。我怎样才能做到这一点?
c++ - 无符号负原语?
在 C++ 中,我们可以制作原语unsigned
。但他们总是积极的。还有没有办法制作无符号负变量?我知道 unsigned 这个词的意思是“没有符号”,所以也不是减号 (-)。但我认为 C++ 必须提供它。