integer-arithmetic

    0热度

    1回答

    我试图将我的arbitrary precision integer类转换成能够使用不是每位数8位的数字。我偶然发现了一个奇怪的问题:我可以使用uint16_t 作为我的基本数字类型,但不能使用uint32_t。我的代码将返回不好的结果。我用来找出错误的例子是0x1111111111111111 * 0x1111111111111111,应该是0x123456789abcdf00fedcba9876

    0热度

    3回答

    我有一个关于如何printf()方法打印整数,有符号或无符号的问题。有一天,我发现自己考虑了将二进制序列转换为人类可以理解的十进制数字序列是多么困难,因为计算机没有小数概念。 下面,我有一个printf()方法(从here)及其相关的方法。我试图了解尽可能多地谈谈如何printi()的作品,你可以在评论中看到: #define PAD_RIGHT 1 #define PAD_ZERO 2 #

    0热度

    3回答

    说我有16个64位无符号整数。在执行操作时,我一直非常小心地在它们之间提供携带物。我可以将它们送入一种方法,将它们全部转换为一串十进制数字,就像它是一个1024位二进制数字一样?换句话说,是否可以创建一个方法来处理代表一个大整数的任意数量的整数? 我认为对于有符号整数会更困难,因为最重要的一点是需要处理。我想这应该是最重要的整数是有符号的整数,其余的将是无符号的,以表示数字的剩余部分。 (这是半有

    3热度

    2回答

    vector<bool> working_lattice(box.rect.length * box.rect.height * box.rect.width); 如何使用上述声明风格访问working_lattice[1][5][3]?

    3热度

    1回答

    会有人请还跟我感谢你解释一下这个功能! int overflow(int x, int y) { int result, non_overflow, overflow, result_sign, mask; result = x + y; result_sign = result >> 31; //Need help starting from here... I

    1热度

    3回答

    我需要做的是使用整数算术将分数转换为浮点数。所需的小数位数被指定为变量DECIMALS。每个分数都包含在一个整数元组中,例如(1, 3)。第一项是分子,第二项是分母。这些元组包含在名为fractions的列表中。 这是到目前为止我的代码: fractions = [(1,7), (2,3), (22,7), (7001,7), (9,3), (611951,611953), (1,11), (1,

    4热度

    2回答

    我在需要快速运行的Arduino上编写一些代码,并对整数百分比进行粗略近似。 例如,给定一个数字,我想找到它的90%,或70%或30%等。这样做的显而易见的方法是乘以一个浮点例如。 x * 0.9;或x * 0.3;但是因为我需要速度,我想避免浮点计算。如果我只是分两个幂,我会做一个按位移,但是有没有类似的技术用于使用整数近似90%,80%等?

    1热度

    2回答

    我有式: X = (a * X)/b; 这用于重新缩放X与a/b。但是X是16位无符号整数,并且与a相乘可能很容易溢出。我怎样才能用精确的结果使用整数进行计算。 我当然可以使用浮点算法,但是这种操作很有可能在没有浮点硬件的处理器上工作。 编辑:我忘了说a和b都是32位无符号整数。 那么我的答案是右移a和b,直到它们都适合16位。这样a * X是32位,最后的计算是准确的。

    4热度

    3回答

    有一些算法在“非常好”意味着最小化浮点算术运算量以利于整数算术的假设下“非常好”地解决问题。例如Bresenham's line algorithm用于确定要填充哪些像素以便在画布上绘制一条线:这个人实际上只用一些简单的整数算术就可以完成整个过程。 这种事情在许多情况下显然是很好的。但是值得关注的是在javascript中需要大量浮点运算的操作吗?据我所知,就语言规范而言,一切都是十进制数。我想知

    0热度

    1回答

    我试图将格式为"yyyy-mm-dd"的时间戳转换为整数会计周。目前,我的算法是4(k-1)+ floor(d/7)+1,其中k是整数月份,d是月份的整数日期。周六开始新的财政周。 这有一些缺陷,是不正确的。例如考虑2012年1月28日星期六: 我的算法计算5(这是正确的)。 接下来考虑,周五2月3日: 我的算法计算5(这是正确的)。 现在考虑2月4日星期六。 我的算法计算5(这是不正确的)。 看