26 / 26 / 18
Регистрация: 16.01.2014
Сообщений: 161
1

Битовое представление числа, старший байт

16.01.2014, 13:50. Показов 1640. Ответов 3
Метки нет (Все метки)

Здравствуйте, программисты.
Имеется такой вот код. Все в это коде абсолютно понятно, не могли бы вы мне объяснить 16 строчку с циклом, а именно условие оператора if. Заранее благодарен. И можно ли сделать, чтобы при вводе числа 0, у которого нет старшего бита, он тоже работал. Как?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int bitwork(unsigned);
int main(void)
{
unsigned a;
FILE *fin=NULL;
printf("vvedite 4islo: ");
scanf("%u", &a);
printf("Starwiy bit pod nomerom %d\n",bitwork(a));
return 0;
}
 
int bitwork(unsigned a)
{
int k,l;
for(k=0;k<32;k++)   if (a&(1<<k)) l=k;
return l;
}
Добавлено через 16 минут
Изменил 8 строчку на такую, чтобы работало при 0.
C
1
scanf("%u", &a); if(a==0){printf("Net starweqo bita\n"); return -1;}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2014, 13:50
Ответы с готовыми решениями:

Вывести битовое представление целого числа со знаком
Проверьте пожалуйста код, просто выдает ошибки задание было следующее: Ввести из стандартного...

Как получить младший байт и его старший бит
Подскажите как получить младший байт и его старший бит. И как сделать замену старшего бита младшего...

Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить.
Помогите пожалуйста, вообще не могу понять как делать следующее...Еще и в программе CODE BLOCKS...

Функция: изменить старший байт числа на заданное значение, не изменяя младший байт
функция изменяет старший байт числа на заданное значение не изменяя младший байт. как можно проще

3
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11050 / 6996 / 1657
Регистрация: 25.07.2009
Сообщений: 12,764
16.01.2014, 15:34 2
Цитата Сообщение от The535 Посмотреть сообщение
чтобы работало при 0...
... нужно было переменную l внутри чудо-функции нулём инициализировать.
Хотя и это бы не помогло. Там цикл вообще для чего?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <limits.h>
 
#define INT_BIT ( CHAR_BIT * sizeof(int) )
 
int main(void) {
    unsigned n;
    
    while ( printf("Unsigned number: ") && scanf("%u", &n) == 1 )
        printf("Most significant bit is: %u\n", ( n >> ( INT_BIT - 1 ) ) & 1);
        
    return 0;
}
Код
$ ./most_significant_bit 
Unsigned number: 2147483647
Most significant bit is: 0
Unsigned number: 2147483648
Most significant bit is: 1
Другой вариант:
C
1
        printf("Most significant bit is: %u\n", ( (int)n < 0 ) );
Добавлено через 10 минут
Цитата Сообщение от The535 Посмотреть сообщение
Битовое представление числа, старший байт
Только сейчас заметил - таки старший байт или старший бит?
1
Boleon
16.01.2014, 16:12
  #3

Не по теме:

подсказка тс

1
26 / 26 / 18
Регистрация: 16.01.2014
Сообщений: 161
13.01.2015, 20:02  [ТС] 4
Извините. На тот момент я был очень и очень не опытным программистом.
Может быть кому-то в дальнейшем понадобится.
Цикл проходит по всем битам (у int их 32) и выполняет конъюнкцию. Если результат конъюнкции = 1, то запоминаем эту позицию.
П.С. Конъюнкция - функция алгебры логики, логическое И.
x1 x2 f
0 0 0
0 1 0
1 0 0
1 1 1

П.С.С. Конъюнкция с единицей дает результат единицы только в случае, если второй операнд тоже равен единице.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2015, 20:02

Вывести битовое представление целого числа со знаком
как можно упростить данный код и исправить ошибки? signed int b; signed int c; signed int d;...

Битовое представление вещественного числа, ошибка в коде
#include &lt;iostream&gt; using namespace std; void binary (double x); //функция вывода...

Функция, зеркально отображающая битовое представление числа
Необходимо написать программу которая зеркально переворачивает битовое представление целого числа,...

Вводим n. Нам нужно битовое представление этого числа
Вводим n. Нам нужно битовое представление этого числа Как-то не получается у меня с этой темой

Считать старший байт числа
Добрый день подскажите пожалуйста! Как в переменную записать число 3 числа 35, или 6 числа 69?

Извлечь старший байт с числа типа Long.
Есть число типа Long, необходимо из него извлечь старший байт. Делить на 256^3 без толку, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.