java.util.Random类有一个方法nextLong(),它在调用next(32)时返回一个随机有符号整数。
public long nextLong() {
// it's okay that the bottom word remains signed.
return ((long)(next(32)) << 32) + next(32);
}
为什么保留下面的单词签名不会影响随机生成的数字的质量?在构造示例时,如果底部单词为负值,则在生成的长值中间对其进行零化。
final long INTEGER_MASK = 0xFFFFFFFFL;
i
我想把两个非常大的十六进制数相乘,然后打印出来,例如:
28B2D48D74212E4F x 6734B42C025D5CF7 = 1068547cd3052bbe5688de35695b1239
由于我期望它是一个非常大的数字,所以我使用了unsigned long long int类型:
unsigned long long int x = 0x28B2D48D74212E4F;
unsigned long long int y = 0x6734B42C025D5CF7;
然后像这样打印乘法:
fprintf(stdout, "%llx\n", x*y);
我得到
我写了一个程序,用来打印牛顿二项码的值。测试次数,t[i][0] - n,t[i][1] - k。对于小数n和k,它似乎是可以的,但是当我想输入更大的数字时,它会打印0、1或小负整数。基本上,我使用了长整数的int,所以它应该与更大的数字一起工作。你能解释一下为什么吗?
#include <iostream>
long fact(int x);
using namespace std;
int main()
{
int number;
cin>>number;
int t[number][2];
for(int i=0; i<nu
当我打印以下内容时,为什么会得到-1?
unsigned long long int largestIntegerInC = 18446744073709551615LL;
printf ("largestIntegerInC = %d\n", largestIntegerInC);
我知道我应该使用llu而不是d,但是为什么我得到的是-1而不是18446744073709551615LL?
是因为溢出吗?
希望你能在这里帮我:)
我已经订购了一个RFID标签和扫描仪用于业余爱好。标签将输入发送到标签,我想在C程序中使用它。
问题是..标记正在发送十六进制的代码- 10个字符长度。
我曾尝试将这个数字存储在一个很长的整型变量中,但似乎行不通。
当我使用printf打印变量时,只打印前8个字符。其余的(省略了2位数字)。
long long int n1;
n1 = recieve_data();
printf("%lx", n1);
我也试着自己输入10位十六进制数,这样做:
long long int n1;
scanf("%lx", &n1);
prin
如果我知道数据对象的地址,我是否可以将地址存储为整数,并将整数作为指针进行操作?
例如,
void main(){
long a = 101010;
long *p = &a;
long b = p;
printf("%lld\n", *(long*)b);
}
总是安全的吗?
注释:long b = p;生成一个警告:
Initialization makes integer from pointer without a cast
然而,该程序打印101010。
我曾经用这个代码在32位的Windows7上从MS Access 2010打印出PDF文件。
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String) As Long
Function PrintAttachement
如何使用GCC在long long int和unsigned long long int中打印C99?
我搜索了其他建议使用%lld的帖子,但它给出了以下警告:
warning#1:格式为-Wformat|的未知转换类型字符'l‘
warning#2:格式的参数太多了-Wformat-extra
作以下尝试:
#include <stdio.h>
int main()
{
long long int x = 0;
unsigned long long int y = 0;
printf("%lld\n", x);
print
我有一个C代码,我想打印所有的数字,直到一定范围的二进制。我有以下代码,但是打印部分似乎不能正常工作。
#include <limits.h>
#include <stdio.h>
#include <string.h>
#define SIZE UINT_MAX
const char *byte_to_binary(unsigned long int x)
{
static char b[33];
b[0] = '\0';
unsigned long int z;
for (z = SIZE; z &g
我写了以下文章,我希望16会被打印出来。
#include <iostream>
enum E : long { e = 16 };
struct X
{
E e : 5;
};
X x;
int main(){ x.e = E::e; std::cout << static_cast<int>(x.e) << std::endl; }
但事实并非如此,我收到了一个编译器警告,-16被打印出来了。警告是:
warning: implicit truncation from 'E' to bitfield ch
我正在为一个引导加载程序创建我自己的prinf(),这意味着我必须使用BCC编译器,并且我不能使用系统库,因为它们不存在。我确实能够根据需要使用汇编中设计的putc()函数和字符串库函数strcmp等来帮助我。
我似乎遇到了一个逻辑问题。
如果我在Linux (Cc)上编译的测试文件中定义这一点:
int a = 0;
int b = 1;
int i1 = 0;
int i2 = 1;
unsigned long x = 42949672;
printf("\nHI! :%d: :%d: :%d: :%d: :%d: :%d:\n", x,a,b,i1,i2,x);
然后我可
我试图将原始数据(ZPL)发送到Excel中选定的打印机。我已经在不同的Ms Access项目中成功地做到了这一点,但是现在我需要Excel项目中的相同功能。通过引用Excel项目中的Access对象库,我可以使用相同的代码,并且它可以按预期工作。问题是,工作簿以后可以在没有安装Access的情况下在计算机上使用,而且我找不到其他对象。
Private Type DocInfo
pDocName As String
pOutputFile As String
pDatatype As String
End Type
Private Declare PtrSafe Fu
目前,我正在从事一个网络项目,我正在将长数据(64位)转换为高字节顺序,然后在套接字上发送。为此,我使用htobe64(x)函数。在接收端客户端,我使用be64toh(x)函数将高字节顺序转换为主机字节顺序。这对于像(132)这样的正数来说工作得很好,但是当数字是负数(-132)时,上面的函数会返回一些模糊的数字。我搞不懂为什么当我使用像上面这样的标准函数时,这种情况会发生。目前在ubuntu (linux)机器上测试客户端和服务器。 例如,参见下面的代码。 long a = -132;
cout << "=========" << endl;
co
我试图通过键入代码,在Turbo C中存储和打印十六进制格式的十六位数字
long long unsigned num=0x35647882781256532
但它只打印最后八位数字。当我在Ubuntu中尝试时,它打印出所有的16位数字。请告诉我如何在Turbo C中打印全部十六进制格式的十六位数字。
我正在尝试解决codechef.com ()上的掷硬币问题。我的代码是用C语言编写的,我在运行Linux的机器上使用Linux v4.4.3对其进行了测试,我的程序可以处理所提供的示例输入。然而,在上传到法官时,我收到了“错误答案”的消息。在我的程序中,我通过位的切换来表示硬币的翻转。我认为我的算法是正确的,我不能想出它会失败的情况。下面是我的代码。任何帮助都将不胜感激。
谢谢。
#include <stdio.h>
long int n=0,temp,number_of_coins,number_of_inputs,bit_mask;
long int number_of_on
此代码不像预期的那样运行。它只是尝试在一个未签名的长int中设置位31。
int main() {
printf("sizeof(unsigned long int) is %ld bytes\n", sizeof(unsigned long int));
unsigned long int v = 1 << 30;
printf("v is (%lx)\n", v);
v = 1 << 31;
printf("v is (%lx)\n", v);
}
这是输出:
sizeof(un
我在PIC单片机上做了一些简单的数学运算,用C语言运行代码,并使用MPLABX和xc16编译器。这是代码:
double mydouble = 0.019440;
long long int mypower = 281474976710656;
long long int result = mypower*mydouble;
打印出来的“结果”给我5,471,873,794,048,而它应该给我5,471,873,547,255。你知道是什么导致了这个问题吗?我该怎么纠正呢?
谢谢
在ARM交叉编译器中使用unsigned long long类型的变量进行编译时,我遇到了一些问题
该变量表示分区大小(~256GBytes)。我希望它存储为64位,但在使用%lld打印它时,或者甚至尝试将它打印为兆字节(value/(1024*1024*1024))时,我总是看到实际值中只有32位。
有人知道为什么编译器把它存储为32位吗?
编辑:
我的错误是,该值是使用以下计算在C中设置的:
partition_size = st.f_bsize*st.f_frsize;
struct statvfs { unsigned long int f_bsize; unsigned long i
我在一个需要更新的算法中找到了这段代码:
if (value > (unsigned long long) LONG_MAX)
编辑:value是两个uint64_t数除法的结果。
据我所知,(unsigned long long) LONG_MAX是一个非常大的数字:
#include "stdio.h"
#include "limits.h"
int main() {
unsigned long long ull = (unsigned long long) LONG_MAX;
printf("%lu&
我正在用C++中的JNI为Android开发一个本地插件。我想打印一个jlong值,即。它是安全的直接投给一个长期,或有什么具体的平台问题,我应该知道?
jlong foo = 2;
// This results in the following warning:
// Format specifier '%ld' requires 'long' argument instead of 'jlong'.
printf("%ld", foo);
// This works without a warning.
printf(&
如何使用蛮力(朴素算法)检查一个16位长的整数是否为质数,并打印出它之前的所有质数。数字示例: 1254786951475276。这是我的代码:
import java.io.*;
public class PrimeNumbers {
public static boolean checkPrime(long n)
{
if (n % 2 == 0)
return false;
for (int i = 3; i <= Math.sqrt(n); i += 2)
{
我正在编写一些32位ANSI,用gcc编译,其中我需要打印一些64位有符号和无符号整数。问题是,在gcc 32位C中,int64_t和uint64_t使用ANSI不支持的格式说明符%lld和%llu分别转换为long long int和unsigned long long int。使用inttypes.h中提供的格式说明符也无济于事,因为它们会转换为%lld和%llu。
以下代码无法编译:
#include <stdio.h>
#include <inttypes.h>
int main() {
uint64_t some_int = 123456789;