Tag: 整数

为什么语言在默认情况下会在整数溢出时引发错误?

在几种现代编程语言(包括C ++,Java和C#)中,该语言允许在运行时发生整数溢出 ,而不会引起任何types的错误情况。 例如,考虑这个(人为的)C#方法,它不考虑上溢/下溢的可能性。 (为了简洁,该方法也不处理指定列表为空引用的情况。) //Returns the sum of the values in the specified list. private static int sumList(List<int> list) { int sum = 0; foreach (int listItem in list) { sum += listItem; } return sum; } 如果这个方法被调用如下: List<int> list = new List<int>(); list.Add(2000000000); list.Add(2000000000); int sum = sumList(list); sumList()方法中会发生溢出(因为C#中的inttypes是一个32位有符号整数,并且列表中的值的总和超过了最大32位有符号整数的值)。 sumvariables的值是-294967296(不是4000000000的值)。 这最有可能不是sumList方法的(假设的)开发者所期望的。 显然,开发人员可以使用各种技术来避免整数溢出的可能性,例如在Java中使用BigIntegertypes或C#中的checked关键字和/checked编译器开关。 然而,我感兴趣的问题是为什么这些语言默认情况下允许整数溢出发生,而不是在例如运行时执行操作时引发exception溢出。 […]

Python如何pipe理int和long?

有人知道Python如何pipe理int和longtypes吗? 它是否dynamicselect正确的types? 什么是int的限制? 我正在使用Python 2.6,与以前的版本是不同的? 我应该如何理解下面的代码? >>> print type(65535) <type 'int'> >>> print type(65536*65536) <type 'long'> 更新: >>> print type(0x7fffffff) <type 'int'> >>> print type(0x80000000) <type 'long'>

整数的最大值

在C中,整数(对于32位机器)是32位,范围从-32768到+32767。 在Java中,整数也是32位,但范围从-2,147,483,648到+2,147,483,647。 我不明白Java中的范围是如何不同的,即使位数是相同的。 有人可以解释这个吗?

在PHP中将数字(1,2,3)转换为string(一,二,三)

有谁知道如何将一个数字,如1,2,或3在PHP中的文本版本(一,二,三)? 我只需要从1转换到99.我知道我可以写一个巨大的开关语句,但这将是荒谬的。

如何在Java中连接int值?

我有以下值: int a=1; int b=0; int c=2; int d=2; int e=1; 我如何连接这些值,以便我结束了一个string是10221 ; 请注意,将a乘以10000, b乘以1000 …..和e乘以1将不起作用,因为b=0 ,因此当我将值加起来时,我将失去它。

从Python中的string和整数中创build一个string

当我尝试获取一个整数并将“b”前置到它时,我得到这个错误,将它转换成一个string: File "program.py", line 19, in getname name = "b" + num TypeError: Can't convert 'int' object to str implicitly 这与这个function有关: num = random.randint(1,25) name = "b" + num

什么是正确的方式来表示电话号码?

在我的某个应用程序中,我无法代表手机号码。 我想知道是否有一个Integer类可以让你存储这样一个以0417254482开头的数字。也许使用一个string更合适一些? 目前,当我试图使用代表一个电话号码与整数,加倍多头,我似乎存储随机数字,而不是我打算存储的数字。

BASH:testingstring是否作为整数有效?

我正在尝试做一些足够普通的事情:在shell脚本中parsing用户input。 如果用户提供了一个有效的整数,那么脚本会做一件事情,如果无效的话,它会做其他事情。 麻烦的是,我还没有find一个简单的(合理的,优雅的)做这个方法 – 我不想一个一个的字符。 我知道这一定很容易,但我不知道如何。 我可以用十几种语言做,但不是BASH! 在我的研究中,我发现这一点: 正则expression式来testing一个string是否包含以10为底的有效实数 在那里有一个关于正则expression式的答案,但据我所知,这是C语言中的一个函数(等等)。 尽pipe如此,它看起来像一个很好的答案,所以我尝试了与grep,但grep不知道该怎么办。 我尝试了-P,在我的盒子上意味着把它当作PERL regexp – nada。 短跑E(-E)也没有工作。 而且-F。 只是要清楚,我正在尝试这样的事情,寻找任何输出 – 从那里,我将破解剧本利用我得到的任何东西。 (IOW,我期待一个不合格的input不会在有效的行重复时返回。) snafu=$(echo "$2" | grep -E "/^[-+]?(?:\.[0-9]+|(?:0|[1-9][0-9]*)(?:\.[0-9]*)?)$/") if [ -z "$snafu" ] ; then echo "Not an integer – nothing back from the grep" else echo "Integer." fi 有人请说明这是如何做到最简单吗? 坦率地说,在我看来,这是TEST的一个短暂的过程。 它应该有这样的旗帜 if [ -I "string" […]

在Python中将整数转换为二进制

为了将整数转换为二进制,我已经使用这个代码: >>> bin(6) '0b110' 何时擦除'0b',我用这个: >>> bin(6)[2:] '110' 如果我想将6显示为00000110而不是110我该怎么办?

有符号与无符号整数

我正确地说,有符号和无符号整数之间的区别是: 无符号可以保持较大的正值,并且没有负值。 无符号使用前导位作为值的一部分,而带符号的版本使用最左侧的位来确定数字是正数还是负数。 有符号整数可以同时包含正数和负数。 还有其他的区别?