Tag: 整数运算

将多个整数打印为一个任意长的十进制字符串

假设我有16个64位无符号整数。 在执行操作时,我一直小心地在它们之间适当地进给。 我可以将它们提供给一个方法,将它们全部转换成一个十进制数字的字符串,好像它是一个1024位的二进制数字吗? 换句话说,是否有可能使一个方法适用于代表一个更大整数的任意数量的整数? 我认为对于有符号整数来说会更困难,因为有最重要的一点要处理。 我想这将是最重要的整数是有符号整数,其余的将是无符号的,以表示数字的剩余“部分”。 (这与另一个问题半关联。)

长整数运算中的歧义?

看看下面这段代码: #include int main(void) { int a; a = 2147483647; printf(“a + 1 = %d \t sizeof (a + 1) = %lu\n”, a + 1, sizeof (a + 1)); printf(“a + 1L = %ld \t sizeof (a + 1L) = %lu\n”, a + 1L, sizeof (a + 1L)); a = -1; printf(“a + 1 = […]

数值大于ULLONG_MAX

我需要存储和使用大于ULLONG_MAX数值。 我将需要使用这些值进行算术运算,因此我认为store as char**不是一个选项。 有没有办法在这些情况下动态创建额外的long前缀? 谢谢你们。 根据回复,非常有帮助,但我怀疑最佳性能选项。 piokuc引用性能链接,但目前还不清楚。 在这段时间我在GMP或MPIR之间,有一个更快?

该函数输出的说明

我正在做复习问题,问我“以下是什么输出”,而我在理解这个function方面遇到了一些麻烦: int a = 1, b = 1, c = -1; c = –a && b++; printf(“%d %d %d”, a, b, c); 输出是010.我的问题是关于第2行, c = –a && b++ 。 如何处理此行,以及它如何工作/更改值? 如果它是c = –a || b++ c = –a || b++ ? 从我的理解,我认为输出将是020。

将两个128位整数相乘

我试图在C中乘以两个128位整数。 这是我的算法: 将两个128位序列分成S1和S2。 然后将S1分成S11(前/上半部分)和S12(后/下半部分)并将S2分成S21(前/上半部分)和S22(后/下半部分)。 将S12乘以S22 … = S1222。 将S11乘以S21 … = S1121,然后将其乘以2 ^ 128进行位移 将S1222和S1121组合成新arrays的前半部分和后半部分。 我们称之为“Array1”。 新数组的长度是S1的两倍。 然后我们必须将S12乘以S21并将S11乘以S22。 我将这两个相乘得到S1221和S1122(并相应地对它们进行位移)。 现在我必须将它们添加到Array1。 这是我要求帮助的部分。 我不确定如何将这些一个一个地添加到Array1。 请记住,当您从Array1的3/4到Array1的1/4时,可能会有一个1的进位,因为这是需要添加S1221和S1122的跨度。 我的问题是:如何将dstM1和dstM2添加到已填充的数组d中?

BITWISE AND操作如何在C程序中占用比ARITHMETIC ADDITION操作更多的CPU时钟?

我想测试按位运算是否真的比算术运算更快。 我以为他们是。 我写了一个小的C程序来测试这个假设,令我惊讶的是,加法平均比按位AND运算少。 这对我来说是令人惊讶的,我无法理解为什么会这样。 根据我所知的附加,来自较低有效位的进位应该被携带到下一位,因为结果也取决于进位。 对我来说,逻辑运算符比加法更慢是没有意义的。 我的鳕鱼在下面: #include #include int main() { int x=10; int y=25; int z=x+y; printf(“Sum of x+y = %i”, z); time_t start = clock(); for(int i=0;i<100000;i++)z=x+y; time_t stop = clock(); printf("\n\nArithmetic instructions take: %d",stop-start); start = clock(); for(int i=0;i<100000;i++)z=x&y; stop = clock(); printf("\n\nLogic instructions take: %d",stop-start); } 一些结果: Arithmetic instructions take: […]

x86上的有符号和无符号算术实现

C语言有签名和无符号类型,如char和int。 我不确定,它是如何在汇编级别实现的,例如在我看来,有符号和无符号的乘法会带来不同的结果,所以汇编是做无符号和有符号算术还是只有一个,这在某种程度上是模拟的不同的情况?

如何在内存中存储任意大的整数值?

我必须存储一个大于long数据类型的最大值的整数值。 我如何在内存中存储和操作此值? 如果可能的话,请通过一个例子来说明。