В массиве определить количество чисел с установленными старшими младшими разрядами - C (СИ)
Формулировка задачи:
здравствуйте!
вот задача: в массиве целых 32х разрядных чисел определить кол-во чисел с установленными старшими младшими разрядами.
честно говоря, понимаю плохо, но что-то написать удалось, пожалуйста, помогите разобраться:
Спасибо
#include <stdio.h> void main(void) {int i, a[10], s=0; const int mask=3; for(i=0; i<10; i++) {scanf("%d",&a[i]);} for(i=0; i<10; i++) {if((a[i] &mask)==mask) {s+=1;}} //нужен ли пробел между a[i] и &mask ? и как обозначить, что меня интересуют только старшие или только младшие разряды? for(i=0; i<10; i++) {printf("%d",s);}}
Решение задачи: «В массиве определить количество чисел с установленными старшими младшими разрядами»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <limits.h> #define ARRLEN 10 char *binStr(char *buf, int d){ char *p; int i; for ( p = buf, i = sizeof(int) * CHAR_BIT - 1; i >= 0; --i ) *p++ = ( d & ( 1 << i ) ) ? '1' : '0'; *p = '\0'; return buf; } int main(void){ int arr[ARRLEN]; size_t i; char buf[33]; srand(time(NULL)); for ( i = 0; i < ARRLEN; ++i ) arr[i] = rand() % 100 - 50; printf("\nAll values:\n"); for ( i = 0; i < ARRLEN; ++i ) printf("%4d\t0x%08x\n", arr[i], arr[i]); printf("\nValues where first and last bit is set:\n"); for ( i = 0; i < ARRLEN; ++i ) if ((( arr[i] & 1 ) && (arr[i] & 1 << 1)) || ((arr[i] & ( 1 << ( sizeof(int) * CHAR_BIT - 1 )) ) && (arr[i] & ( 1 << ( sizeof(int) * CHAR_BIT - 2 ))))) printf("%4d\t0x%08x\t%s\n", arr[i], arr[i], binStr(buf, arr[i])); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется длина массива (ARRLEN) и буфер для двоичного представления числа (buf)
- Функция binStr() преобразует целое число в двоичную строку
- В функции main() инициализируется массив arr[] случайными значениями
- Выводится список всех значений массива arr[]
- Проверяется каждое значение массива arr[] на условие: старший и младший биты установлены
- Если условие выполняется, то выводится значение числа и его двоичное представление
- Программа возвращает 0, завершая свою работу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д