Побитовые операции: Не зануляется последняя цифра - C (СИ)

Узнай цену своей работы

Формулировка задачи:

нужно занулить числа меньше 5. я проделал пока только для последней цифры. Почему не зануляется последняя цифра?
#include <stdio.h> 
void main(){ 
unsigned long raz, mask1 = 0xf,mask2=0x00f0, mask3=0x0f00, mask4=0xf000; 
int a; 
scanf("%x",&a); 
raz=a&mask1; 
if (raz<5) raz=0; 
a=a&(a|raz); 
printf("%x",a); 
}

Решение задачи: «Побитовые операции: Не зануляется последняя цифра»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char* argv[])
{
   unsigned int number, i, sInt;
 
   sInt = sizeof(int)*2;
   scanf ("%x", &number);
   for (i = 0; i < sInt; i++)
      if (((number >> i*4)&0xf) < 0x5)
         number &= ~(0xf << i*4);
   printf("%x\n", number);
   system("pause");
   return 0;
}

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

  1. Подключение необходимых библиотек для работы с файлами и математическими операциями.
  2. Определение типа данных переменной number и её инициализация как беззнаковое целое число.
  3. Определение типа данных переменной i и её инициализация как целочисленный счётчик.
  4. Определение переменной sInt для хранения размера памяти, выделяемой под один int тип данных в битах, с последующим умножением на два, так как в данном случае рассматривается 16-битный int тип данных.
  5. Считывание числа с помощью функции scanf в переменную number.
  6. Организация цикла по всем битам числа number с помощью переменной i.
  7. Проверка каждого бита числа number на значение меньше 0x5 с помощью побитовой операции AND и сдвига на 4 позиции вправо с последующим побитовым сдвигом влево на 4 позиции и сохранением результата в переменной number.
  8. Вывод полученного числа с помощью функции printf.
  9. Остановка выполнения программы с помощью команды system(pause).
  10. Возврат значения 0 для завершения программы.

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


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

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

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