我试图将long转换为整数.我相信long的值足够低以适应整数范围.
我有代码:
'mapdc is a long
Debug.Print mapdc
Debug.Print CInt(mapdc)
Run Code Online (Sandbox Code Playgroud)
第一行运行良好.它输出1107367444.然而,第二行导致发生溢出错误.
有任何想法吗?谢谢!!!!
为什么java中的代码会给出负值?
long ttt = (60 * 60 * 1000 * 24 * 26);
System.out.println(ttt);
Run Code Online (Sandbox Code Playgroud)
结果出现在eclipse控制台上-2134967296?
我正在做的任何傻事,可能是它超越int范围我想?
我util.Scanner用来读取用户的输入.我不明白如何读取长数据类型值.
Scanner scr=new Scanner(System.in);
long l=scr.nextInt();
Run Code Online (Sandbox Code Playgroud)
我无法使用上面的代码读取64位数据 - 它只是给我一个输入不匹配异常.
我正在做一个会使用非常大的数字的程序,即使是最轻微的也会有太多的工作.我的问题是:big_integer比普通的int慢吗?
long number = 12;
BigInteger number2 = 12;
public void add()
{
number += 1;
}
public void add2()
{
number2 += 1;
}
Run Code Online (Sandbox Code Playgroud)
哪一个现在更快?
我找不到如何修复这个练习:它是关于学习字符计数(我正在使用Kernighan-Ritchie版本).我的问题栏说:
"warning:format指定类型'int'但参数的类型为'long'[ - Wformat] printf("%1d \n",nc); ~~~ ^〜%1ld"
这是代码:
#include <stdio.h>
int main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
Run Code Online (Sandbox Code Playgroud)
我在Mac上使用Qt Creator 3.1.1.Xcode版本6.2(6C131e)上的相同问题.
有帮助吗?提前致谢.
我正在玩C++并决定编写将返回给定整数的位长度的算法.在解决了一些不相关的问题后,它终于奏效了.这是我的代码:
#include <iostream>
using namespace std;
long long int ipow(int x,int n)
{
if (n==0) return 1;
if (n%2!=0) return x*ipow(x,((n-1)/2))*ipow(x,((n-1)/2));
return ipow(x,n/2)*ipow(x,n/2);
}
int bits(long long int n)
{
if (n==0 || n==1) return 1;
int i=1;
while (n>ipow(2,i+1)-1) i++;
return i+1;
}
int main()
{
long long int n;
cin>>n;
cout<<bits(n)<<endl;
}
Run Code Online (Sandbox Code Playgroud)
我用越来越大的数字测试了它并发现了一个有趣的事实 - 程序对于大多数整数来说真的很快,甚至更大(50-60位长),但是卡在高CPU负载而且没有显示任何数分钟的数字"a小"更大.
我修改了一点代码以找到断点并发现我的程序可以处理的最后一个整数是4611686018427387903.我在Wolfram Alpha上查找它并发现它等于2 ^ 63-1,这意味着它是最大的62位数.
里斯我的问题 - 它可能是愚蠢的 - 为什么62位?据我所知,long long int可以容纳64位变量,我的CPU也可以处理64位整数.那么为什么不是64位的限制呢?
-Mateusz Duchalski
PS我正在使用Code :: Blocks与最新稳定的MinGW在Windows 10 64位上运行,由Intel Core i5-4570 Haswell …
long long n, prod, i;
n = 13;
prod = 1;
for (i = 1 ; i <= n ; i++) {
prod *= i;
}
printf("%d\n", prod);
printf("%d\n", sizeof(long long));
Run Code Online (Sandbox Code Playgroud)
回报
$ 1932053504
$ 8
Run Code Online (Sandbox Code Playgroud)
结果显然是溢出的.但我不明白为什么会发生这种情况long long.sizeof(int)返回4 [字节],但产品是相同的.我究竟做错了什么?
如果我有以下结构:
public struct UInt128 {
internal var value: (upperBits: UInt64, lowerBits: UInt64)
}
Run Code Online (Sandbox Code Playgroud)
想象一个初始化程序,它创建一个适合的随机数,UInt128并且该数字足够大,使得它超过其中一个的值.UInt64
高位和低位总和UInt128是以另一种方式管理的内存或内存的总和吗?
为了处理小数,如果每个的容量UInt64为20,如果该值为UInt12824,则高位值是20,低位值是4吗?
我有一个用C++创建程序的任务,它可以计算极长整数的数字.
我给了两个随机数a和b(1 <= a,b <= 10 ^ 16).我需要找到数字a ^ b(a到功率b)有多少位数.(我不需要知道数字本身,只知道它有多少位数)
关于如何解决这个问题我几乎没有什么想法,我想到的一种方法是创建一个单独的结构,它可以保存这些非常长的整数,并且可以对它们进行乘法运算,但是需要很长时间来进行乘法运算.时间,程序的时间限制为1秒.也许在C++中有某种功能或类似功能可以帮助我?
感谢您的帮助!
This is a simple example of the problem:
public class IntVsLong {
public static void main(String[] args) {
int a = 3;
int b = 3;
long n = 549382313570L;
String s = "epsxyyflvrrrxzvnoenvpegvuonodjoxfwdmcvwctmekpsnamchznsoxaklzjgrqruyzavshfbmuhdwwmpbkwcuomqhiyvuztwvq";
System.out.println(a * n/s.length() + b); //returns 16481469410
System.out.println(a * (n/s.length()) + b); //returns 16481469408
}
}
Run Code Online (Sandbox Code Playgroud)
The first situation, without parentheses, returns 16481469410. The second one, with parentheses, returns 16481469408. Why?