将 size_t 转换为 long 有什么缺点吗?因为,我正在编写一个在文件中维护 links_list 的程序。因此,我基于 size_t 遍历到另一个节点,并且还将列表总数记录为 size_t。因此,显然会有一些转换或添加 long 和 size_t。这有什么缺点吗?如果有的话,我会把所有东西都做的一样长,而不是 size_t,甚至是尺寸。请指教。
Scala-Lang文档说:
Long,一个 64 位有符号整数(相当于 Java 的 long 原始类型)是 scala.AnyVal 的子类型。Long 的实例不由底层运行时系统中的对象表示。
Java 有long(原始的)和Long(装箱的)。
Scala 有boxed这个原语的版本吗?
情况
我想要实现的是将true/false存储为Integer/Long中的一个位.问题是如果某个位为1或0,我无法解决.
码
public class Test
{
private static long unlocked = 0;
public static void main(String[] args)
{
setUnlocked(1);
setUnlocked(2);
setUnlocked(3);
System.out.println(isUnlocked(2);
}
public static void setUnlocked(int id)
{
unlocked += Math.pow(2, id);
}
public static boolean isUnlocked(int id)
{
// ???
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
与上面的测试用例一样,它将产生以下位序列:1110 = 14.
编辑
第二个问题:
public static void setUnlocked(int id)
{
unlocked |= 1 << id;
}
Run Code Online (Sandbox Code Playgroud)
至
public static void setUnlocked(int id, boolean set)
{
}
Run Code Online (Sandbox Code Playgroud)
这将给出在给定位置将该位设置为0或1的选项.
但是我怎样才能做到这一点?
import java.util.*;
import java.lang.*;
import java.io.*;
public class MyClass {
public static void main (final String[] args) {
float distanceInMeters = 0.0f;
long time = 1439230171182L;
long previousTime = 1439230111554L;
float speed = (distanceInMeters / 1000) / ((time - previousTime)/3600000);
System.out.println(speed);
}
}
Run Code Online (Sandbox Code Playgroud)
该计算返回"NaN".有谁知道为什么?
如果我想初始化很长时间1或者0我是否需要添加L到最后?
long l = 0L;
long k = 1L;
Run Code Online (Sandbox Code Playgroud)
与
long l = 0;
long k = 1;
Run Code Online (Sandbox Code Playgroud)
低值是否重要?
长话短说,我在Java中搞乱了一些基本的遗传算法.我用a long来存储我的基因,但我在调试时使用二进制字符串来提高可读性.我遇到了一个奇怪的情况,我无法解析一些以a开头的二进制字符串1(我不知道是否总是这样,但它似乎与长度为64个字符的字符串一致).
我能够通过以下示例复制此内容:
String binaryString = Long.toBinaryString(Long.MIN_VALUE);
long smallestLongPossibleInJava = Long.parseLong(binaryString, 2);
Run Code Online (Sandbox Code Playgroud)
将抛出并生成以下堆栈跟踪:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1000000000000000000000000000000000000000000000000000000000000000"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:592)
at com.company.Main.main(Main.java:25)
Run Code Online (Sandbox Code Playgroud)
鉴于我有一个正确格式化的六十四个字符的二进制字符串,为什么我不能解析一些字符串?大多数情况下,我的字符串是随机生成的,但在上面的实例中,这应该可以工作(Long.MIN_VALUE在Java中看来肯定是有效的长).
所以这是我的代码:
static void Main(string[] args)
{
Console.WriteLine("How many numbers are you going to enter?");
long num = long.Parse(Console.ReadLine());
long[] nums = new long[num];
}
Run Code Online (Sandbox Code Playgroud)
当我为"num"输入10000000000时,我得到了
"System.OverflowException算术运算导致溢出."
我该怎么做才能解决这个问题?
我有一个long.我知道这long不是很大.实际上,它可以编码为7个字节的无符号整数.
我想我写long到byte[7]使用ByteBuffer和小端.
这个
long myLong = ... //some value
byte[] myLongBytes = ByteBuffer.allocate(7).order(ByteOrder.LITTLE_ENDIAN).putLong(myLong).array();
Run Code Online (Sandbox Code Playgroud)
IndexOutOfBoundsException当然是投掷.我甚至可以这样做ByteBuffer吗?我应该以不同的方式做吗?
我写了这个方法,在arrayList中搜索是否有两个数字,它们总和等于变量elem.问题是变量的总和超过了long类型的维数.我怎么写呢?
public static boolean searchSum(ArrayList<Long> array, long elem) {
int left = 0, right = array.size()-1;
while (left<right) {
long n1=Long.valueOf(array.get(left));
long n2=Long.valueOf(array.get(right));
if ((n1+n2)==elem) return true;
else if ((n1+n2)<elem) left++;
else right--;
}
return false;
}
Run Code Online (Sandbox Code Playgroud) 我已经使用c++了3个月多,无法确定中的确切数字最大值long long int。
有人知道价值吗?
long-integer ×10
java ×6
c++ ×2
integer ×2
biginteger ×1
bit ×1
boolean ×1
bytebuffer ×1
c# ×1
endianness ×1
java-8 ×1
math ×1
nan ×1
scala ×1
size-t ×1
sizeof ×1
string ×1