1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Битовые Операции На Си

Тема в разделе "Вопросы новичков и не только", создана пользователем doojkee, 17 мар 2013.

  1. doojkee

    doojkee New Member

    Репутация:
    0
    Регистрация:
    8 апр 2012
    Сообщения:
    3
    Симпатии:
    0
    Добрый вечер, форумчане, нужна ваша помощь, никак не могу додуматься, как сделать это задание:



    Задание нужно выполнить на чистом Си.
    Вот мои наработки:

    Код:
    #include <stdio.h>
    #include <conio.h>
    #include <windows.h>
    
    int output(char x[]){
    int i,j;
    for (i = 7; i >-1; i--)
    for (j = 7; j >-1; j--){
    printf("%d",(x[i]>>j)&1);
    }
    printf("\n");
    }
    
    
    int main(){
    int i,n_bit,k_num_bits, number;
    system("cls");
    
    union{
    double m;
    char a[8];
    }type;
    
    
    printf("Enter the number: ");
    scanf("%lf", &type.m);
    
    output(type.a);
    
    printf("Enter the '1' or '0': ");
    scanf("%d", &number);
    
    printf("Enter the numbers of bits: ");
    scanf("%d", &n_bit);
    
    for(i = 0;i < n_bit;i++){
    printf("Enter the number of bits: ");
    scanf("%d",&k_num_bits);
    type.a[k_num_bits/8] = type.a[k_num_bits/8]^(1<<(k_num_bits-8*(k_num_bits/8)));
    }
    
    printf("\n");
    output(type.a);
    printf("\n");
    
    printf("\nResult is: -> %lf ", type.m);
    
    getch();
    return 0;
    
    }
    В моей коде работает все, только для введенного значения 1, если 0, я не знаю, как дописать этот функционал!
    Надеюсь на вашу помощь!
     
  2. ixoyz

    ixoyz Member

    Репутация:
    0
    Регистрация:
    12 май 2012
    Сообщения:
    16
    Симпатии:
    0
    Поясни задачу:
    Что на что меняем и в каких случаях?
    Если в п.3 ввели 1 тогда ..., если 0 тогда ....

    А ошибка в этой строке:
    Код:
    		type.a[k_num_bits/8] = type.a[k_num_bits/8]^(1<<(k_num_bits-8*(k_num_bits/8)));
    Должно быть так:
    Код:
    	  if (number)
    type.a[k_num_bits/8] = type.a[k_num_bits/8]^(1<<(k_num_bits-8*(k_num_bits/8))); // при условии, что это верно для number=1
    else
    /*Код для number=0*/;
     
Загрузка...

Поделиться этой страницей