В массиве определить количество чисел с установленными старшими младшими разрядами - 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;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяется длина массива (ARRLEN) и буфер для двоичного представления числа (buf)
  3. Функция binStr() преобразует целое число в двоичную строку
  4. В функции main() инициализируется массив arr[] случайными значениями
  5. Выводится список всех значений массива arr[]
  6. Проверяется каждое значение массива arr[] на условие: старший и младший биты установлены
  7. Если условие выполняется, то выводится значение числа и его двоичное представление
  8. Программа возвращает 0, завершая свою работу

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы