Перевести десятичные дроби 3, 5 (в десятой) и 47, 85 (в десятой) в двоичную, восьмеричную и шестнадцатеричную системы счисления с точностью до трех знаков после запятой.
3,5(10)=11,1(2)=3,4(8)=3,8(16) 47,85(10)=10,1111(2)=57,6663(8)=2f,d9999(16) , поставь лучшее решение
volchek01112240
29.11.2021
Умножение числа на 2 в двоичной системе эквивалентно его сдвигу влево на один разряд. при этом старший разряд старшей тетрады должен перейти в новую, третью тетраду или он будет утерян. но по условию, после умножения число по-прежнему имеет два разряда, следовательно мы должны потерять старший разряд безболезненно, а это возможно только если он нулевой. тогда первоначальное число должно быть записано как а после удвоения его запись примет вид запишем сумму цифр исходного числа p1: теперь запишем сумму удвоенного числа p2: по условию эти две суммы равны и мы составляем уравнение: полученное уравнение решается на множестве двоичных чисел. поскольку исходное число двузначное, по крайней мере в старшем разряде оно содержит цифру, отличную от нуля. следовательно, b3 не может равняться нулю и остается только положить b3=1. тогда уравнение (1) примет следующий вид: учитывая, что каждый бит может принимать значения только 0 и 1, мы должны найти такие комбинации бит, которые дадут в сумме 7=4+2+1, потому что у нас в уравнении только такие коэффициенты. сгруппируем члены в (2): полученная система уравнений будет иметь 7 вариантов решений (вариант a2=a1=a0=0 исключается в силу необходимости наличия цифры в старшем разряде), которым в старшем разряде будут соответствовать цифры от 001(2) до 111(2) или от 1(10) до 7(10). ответ: 7 замечание: из (3) можно легко найти числа, которые соответствуют заданным условиям: 30, 45, 60, 75, 90, 105, 120 (все в десятичной системе счисления). в 16-ричной системе они запишутся как 1e, 2d, 3c, 4b, 5a, 69,
o-pavlova-8635
29.11.2021
#include < stdio.h> #include < stdlib.h> int compare(void *a, void *b) { int va = *(int*)a; int vb = *(int*)b; if(va == vb) return 0; return va < vb ? -1 : 1; } int max_index(void *base, int n, int width, int (*compare)(void *a, void *b)) { int i, j = 0; char max[width]; memcpy(max, base, width); for(i = 1; i < n; i++) { if( compare(base+i*width, max) > 0) { memcpy(max, base+i*width, width); j = i; } } return j; } int main() { int n; scanf("%d", & n); int a[n]; for(int i = 0; i < n; i++) scanf("%d", & a[i]); printf("%d\n", a[max_index(a, n, sizeof(int), compare)]); }
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Перевести десятичные дроби 3, 5 (в десятой) и 47, 85 (в десятой) в двоичную, восьмеричную и шестнадцатеричную системы счисления с точностью до трех знаков после запятой.