Tag: 无符号

为什么在C#中int 是uint == true“

请有人澄清C#关键字请。 特别是这两个问题: Q1)第5行; 为什么这个回报是真的? Q2)第7行; 为什么没有抛出exception? public void Test() { object intArray = new int[] { -100, -200 }; if (intArray is uint[]) //why does this return true? { uint[] uintArray = (uint[])intArray; //why no class cast exception? for (int x = 0; x < uintArray.Length; x++) { Console.Out.WriteLine(uintArray[x]); } } } MSDN的描述没有说明情况。 它表示,如果满足这些条件中的任何一个,将会返回true。 (http://msdn.microsoft.com/en-us/library/scekt9xw(VS.71).aspx>MDSN […]

如何在Python中将signed转换为无符号整数

假设我有这个号码i = -6884376 。 我如何引用它作为一个无符号variables? 像(unsigned long)i在C

为什么是一个大于unsigned int的负int?

int main(void) { unsigned int y = 10; int x = – 4; if (x > y) Printf("x is greater"); else Printf("y is greater"); getch(); return (0); } Output: x is greater 我认为输出将是更大,因为它是无符号的。 这背后的原因是什么?

在Java中无符号短小

我怎样才能在Java中声明一个unsigned short值?

将有符号整数转换为无符号长整数的最佳方法是什么?

对于Java中的某些哈希函数,将该值视为无符号整数(例如,用于与其他实现进行比较)是很好的,但是Java仅支持签名types。 我们可以将一个带符号的int转换为“unsigned” long ,如下所示: public static final int BITS_PER_BYTE = 8; public static long getUnsignedInt(int x) { ByteBuffer buf = ByteBuffer.allocate(Long.SIZE / BITS_PER_BYTE); buf.putInt(Integer.SIZE / BITS_PER_BYTE, x); return buf.getLong(0); } getUnsignedInt(-1); // => 4294967295 然而,这个解决scheme似乎对我们真正在做的事情有点矫枉过正。 有没有更有效的方法来实现同样的事情?

有符号和无符号variables有什么区别?

我已经看到了这些在C和C ++的上下文中提到的,但是有符号和无符号variables有什么区别呢?

在C ++中无符号双精度?

为什么C ++不支持无符号双重语法?

应该使用size_t或者ssize_t

在我的代码中,我不使用int或unsigned int。 我只使用size_t或ssize_t来进行移植。 例如: typedef size_t intc; // (instead of unsigned int) typedef ssize_t uintc; // (instead of int) 因为strlen , string , vector …都使用size_t ,所以我通常使用size_t 。 而且,只有当ssize_t可能是负数时才使用。 但是我发现: 无符号整数types非常适合将存储器视为位数组的用途。 使用unsigned而不是int来获得更多的位来表示正整数几乎不是一个好主意。 尝试通过声明variables无符号来确保某些值是正值将通常被隐式转换规则所破坏。 在“C ++编程语言 ”一书中。 所以我感到困惑。 我错了吗? 为什么STL不遵守书上的build议?

什么是解决所有Java字节被签名的最好方法?

在Java中,没有无符号字节的东西。 使用一些低级代码时,偶尔需要使用无符号值大于128的字节,这会导致Java将它们解释为负数,这是由于MSB用于符号。 什么是解决这个问题的好方法? (说不要使用Java不是一种select)

什么时候应该只使用“int”而不是更多符号或特定于大小的types?

我有一个用C 语言实现的编程语言的虚拟机 。它支持在32位和64位体系结构以及C和C ++下编译。 我试图尽可能多的启用警告,使其编译干净。 当我打开CLANG_WARN_IMPLICIT_SIGN_CONVERSION ,我得到了CLANG_WARN_IMPLICIT_SIGN_CONVERSION的新警告。 我想有一个很好的策略,何时使用int与明确无符号types,和/或明确大小的。 到目前为止,我很难决定这个策略应该是什么。 把它们混合在一起(大部分使用int来表示局部variables和参数,而对结构中的字段使用较窄的types),这确实是真的,会导致大量的隐式转换问题。 我喜欢使用结构字段更具体的大小types,因为我喜欢明确控制堆中的对象的内存使用的想法。 而且,对于散列表,我依靠散列时的无符号溢出,所以如果散列表的大小存储为uint32_t ,那就好了。 但是,如果我尝试在所有地方使用更具体的types,我发现自己到处都是曲折的迷宫。 其他C项目做什么?