1. Первая цифра отводится на знак (1 - это -, 0 - это +). Остальные 7 - число в двоичной системе счисления. Причём если число отрицательное, то исходное двоичное число инвертируется, и к нему прибавляется 1. а) 33 | 16 | 8 | 4 | 2 | 1 - в двоичной системе оно выглядит как 100001 1 | 0 | 0 | 0 | 0 | 1 Так как оно положительное, то в начале ставится 0. Так как чисел всего 6, а не 7, то после первого нуля следует поставить ещё один. ответ: 0'0100001 б) -63₁₀ = -111111₂ (переводить уже не буду подробно) Так как число отрицательное, то в начале ставим 1, так как цифр 6, то ставим после 1 0. 1'0111111 Инвертируем: 1'1000000 Прибавляем 1: 1'1000001 ответ: 1'1000001 в) -254₁₀ = -11111110 Так как цифр 8, то последнюю отбрасываем, а далее по алгоритму: 1'1111111 >> 1'0000000 >> 1'0000001 ответ: 1'0000001
#include <malloc.h>
void func(int *mas, int N)
{
int l=0, r=N-1, i;
while(l<r)
{
for(i=l; i<N; i++)
if(mas[i]<0)
break;
l=i;
for(i=r; i>=0; i--)
if(mas[i]>=0)
break;
r=i;
if(l<r)
{
int temp=mas[l];
mas[l]=mas[r];
mas[r]=temp;
}
}
}
int main()
{int *mas, N, i;printf("N= ");scanf("%d", &N);mas=(int*) malloc(N*sizeof(int));for(i=0;
i<N; i++)
{ printf("[%d]= ", i);
scanf("%d", &mas[i]);}func(mas, N);for(i=0; i<N; i++) printf("%d ", mas[i]);
return 0;}
а) 33 | 16 | 8 | 4 | 2 | 1 - в двоичной системе оно выглядит как 100001
1 | 0 | 0 | 0 | 0 | 1
Так как оно положительное, то в начале ставится 0. Так как чисел всего 6, а не 7, то после первого нуля следует поставить ещё один.
ответ: 0'0100001
б) -63₁₀ = -111111₂ (переводить уже не буду подробно)
Так как число отрицательное, то в начале ставим 1, так как цифр 6, то ставим после 1 0.
1'0111111
Инвертируем:
1'1000000
Прибавляем 1:
1'1000001
ответ: 1'1000001
в) -254₁₀ = -11111110
Так как цифр 8, то последнюю отбрасываем, а далее по алгоритму:
1'1111111 >> 1'0000000 >> 1'0000001
ответ: 1'0000001
2.' ' ' . . . . .
а) 11110 б) 10101010
+ 1101 - 11011
=101011 =10001111
в) 1101
* 101
1101
+1101
=1000001
Всё, как в обычной арифметике.