Описание тега integer-arithmetic
Все, что связано с целочисленной арифметикой, то есть арифметическими операциями с целыми числами. Это в основном актуально для языков, которые представляют целые числа с определенными типами данных (например, ʻint` или `long` в C, C++ или Java).
2
ответа
Бинарное сложение выполняет проверку границы типа, тогда как сокращение и приращение не
Я вижу, что код ниже: byte b = 127; b = b + 1; b = b + 1; System.out.println(b); приводит к проверке границ во время выполнения, и первое добавление выводит b из диапазона, что приводит к следующей ошибке - Main.java:11: ошибка: несовместимые типы: …
05 мар '17 в 10:14
1
ответ
Более хорошая арифметика на примитивных типах в Rust
Есть ли лучший способ сделать арифметику для разных примитивных типов (с автоматическим продвижением вверх), чем явное приведение и распаковка? Например, в случае, как: let a: u8 = 1; let b: u16 = 2; let c: u32 = 3; могу ли я как-то избавиться от вс…
26 ноя '14 в 12:52
1
ответ
Использование unsigned в C с отрицательными временными результатами
Из того, что я понимаю, в C unsigned тип ведет себя как арифметика (при условии unsigned имеет 32-разрядную длину) в целочисленном кольце по модулю 4294967296. Таким образом, из базовой теории колец следует, что если у нас есть целочисленное (теперь…
24 июн '16 в 01:59
36
ответов
Неожиданные результаты при работе с очень большими целыми числами на интерпретируемых языках
Я пытаюсь получить сумму 1 + 2 + ... + 1000000000, но я получаю забавные результаты в PHP и Node.js. PHP $sum = 0; for($i = 0; $i <= 1000000000 ; $i++) { $sum += $i; } printf("%s", number_format($sum, 0, "", "")); // 500000000067108992 Node.js va…
04 авг '13 в 18:46
4
ответа
Стоит ли входить и выходить из проверенного блока C#?
Рассмотрим такой цикл: for (int i = 0; i < end; ++i) // do something Если я знаю, что я не переполнюсь, но я хочу проверить переполнение, усечение и т. Д. В части "сделать что-то", мне лучше с checked блок внутри или снаружи петли? for (int i = 0…
17 сен '15 в 17:06
0
ответов
Если x и y являются (подписанными) целыми числами, то ~x+~y+1 == ~(x+y); всегда верно в C?
Я читаю "Компьютерные системы: взгляд программиста", а в главе 2 "Задача домашнего задания 2.81" представлено следующее задание: "2.81 ◆ Мы выполняем программы на компьютере, где значения типа int являются 32-битными. Они представлены в виде дополне…
26 мар '17 в 19:21
1
ответ
Математический метод получения целочисленного массива (перестановка)
Мне нужна математическая функция, которая производит массивы, содержащие все варианты некоторых целых чисел, так называемые перестановки, например: private static final int[][] a = {{1}}; private static final int[][] b = {{1,2},{2,1}}; private stati…
06 апр '14 в 09:19
3
ответа
Оптимизация кода JavaScript для использования целочисленной арифметики
Существуют некоторые алгоритмы, которые решают задачи "очень хорошо" в предположении, что "очень хорошо" означает минимизацию количества арифметических операций с плавающей запятой в пользу целочисленной арифметики. Возьмем, например , алгоритм лини…
29 дек '12 в 04:25
1
ответ
Добавление двух целых чисел параллельно
Предположим, у вас есть 2 беззнаковых целых числа n цифр, заданных в двух массивах a, b, и у вас есть p процессоров, каждый из которых может добавить 2 цифры и вычислить перенос, если он существует. Можно ли вычислить a+b за время O(p+n/p)? Я пыталс…
09 апр '13 в 18:54
3
ответа
Целочисленная арифметика perl, дающая ответ с плавающей запятой
Приведенный ниже код имитирует фактический производственный код. двойные кавычки используются, так как фактические данные поступают из файла XML, анализируется с использованием XML:Twig: #!/usr/bin/perl use strict; use warnings; use diagnostics; use…
28 фев '17 в 16:07
1
ответ
9933272057275866 это магическое число?
Я столкнулся с проблемой и не могу ее объяснить. На самом деле я очень удивлен. Когда я пытаюсь увеличить число 9933272057275866 на 1, оно автоматически добавляет 2!!! Пожалуйста, смотрите следующий код: let test = 9933272057275866; let test2 = test…
16 ноя '17 в 01:06
3
ответа
Быстрее ли умножать младшие числа в C/C++ (в отличие от больших чисел)?
Пример вопроса: Вычисление 123 * 456 быстрее, чем вычисление 123456 * 7890? Или это та же скорость? Я задаюсь вопросом о 32-разрядных целых числах без знака, но я не буду игнорировать ответы о других типах (64-разрядные, со знаком, с плавающей точко…
08 мар '18 в 06:50
6
ответов
Как я могу обнаружить переполнение целых чисел на 32-битных INT?
Я знаю, что такую тему задавали несколько раз, но мой вопрос о переполнении на полных 32 битах int. Например: 11111111111111111111111111111111 + 00000000000000000000000000000001 = 00000000000000000000000000000000 //overflow! Я нашел тему с похожим…
20 янв '14 в 12:02
1
ответ
Ошибка арифметического деления Cuda для длинных длинных типов данных
У меня была странная ошибка в Cuda с целочисленным делением, используя тип данных long long. Вот сокращенная версия кода. __global__ void Test(bool * d_test_list){ long long index = threadIdx.x + blockIdx.x*blockDim.x; bool test = false; if (index /…
13 авг '14 в 02:26
2
ответа
Почему мой код работает? Простая арифметика
Я пишу простой код для вычисления чисел Фабоначчи в качестве упражнения. Код работает, но я не понимаю, почему. У меня есть несколько особых случаев для n=1 а также n=2 это место числа в последовательности (числа 0 и 1). Однако после этого число выч…
05 сен '16 в 20:49
4
ответа
Вычисление квадратного корня из 1000+ битового слова в C
Представьте, что у нас есть, например, 1000-битное слово в нашей памяти. Мне интересно, есть ли способ вычислить квадратный корень из него (не обязательно точный, скажем, без части с плавающей запятой). Или у нас есть только место в памяти и позже у…
06 апр '14 в 12:50
2
ответа
Почему существуют разные машинные инструкции для подписанного mul / div?
Я всегда думал, что знаковые умножения и деления требуют иной логики, чем соответствующие операции без знака. На другом форуме кто-то сказал, что неподписанные ALU могут использоваться без каких-либо изменений для подписанных параметров и давать дей…
16 янв '18 в 20:22
2
ответа
Широкая поддержка умножения в c
Есть некоторая путаница для меня, если c поддерживает широкое умножение, я имею в виду что-то вроде этого int_32 a = 1000*1000*1000; int_32 b = 1000*1000*1000; int_64 c = a*b; или для небольших типов тоже некоторые говорят, что не могут это поддержа…
12 авг '14 в 09:04
1
ответ
Арифметика в партии?
Я делаю игру, и у меня есть Health переменная, чтобы отследить, сколько здоровья у игрока, когда он проходит игру. В какой-то момент игрок порезал губу на банку (я знаю, что это без происшествий) и потерял 2 HP. Я пытаюсь использовать арифметику, чт…
28 мар '16 в 19:57
1
ответ
Продвижение в целочисленных арифметических выражениях
У меня есть два связанных вопроса: Что говорится в стандарте, и что делают разные компиляторы, когда дело доходит до сравнения арифметического выражения в форме x * y == z (или x + y == z), где x * y слишком велико для любого x или y для удержания, …
23 ноя '17 в 00:12