Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
6 / 0 / 1
Регистрация: 01.10.2012
Сообщений: 64
1

Используя битовые операции, вывести на экран восьмеричное представление беззнакового короткого целого

01.10.2012, 17:31. Показов 4972. Ответов 10
Метки нет (Все метки)

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

3.Используя битовые операции, вывести на экран восьмеричное представление беззнакового короткого целого.

А вот 3-я задача,только не очень понимаю,что к чему
Вывести на экран восьмеричное представление короткого целого
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2012, 17:31
Ответы с готовыми решениями:

Используя битовые операции, вывести на экран двоичное представление беззнакового короткого целого
#include <stdio.h> int main(int argc, char* argv) { unsigned short int num; int i,...

Вывести на экран восьмеричное представление короткого целого
Дана задача: Используя битовые операции, вывести на экран восьмеричное представление беззнакового...

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

Вывести на экран двоичное представление беззнакового короткого целого
Используя битовые операции, вывести на экран двоичное представление беззнакового короткого целого.

10
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
01.10.2012, 21:19 2
isu, поможем. Покажи код на Паскале.
0
3087 / 2408 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
01.10.2012, 21:33 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
 
int main(int argc, char* argv[])
{
   unsigned short int num;
   int i, count;
 
   printf("Enter the number: ");
   scanf("%d", &num);
   count = sizeof(unsigned short int)*8 / 3;
   for (i = count; i >= 0; i--)
   {
      printf("%d", (num >> i*3)&7);
   }
   printf("\n");
   return 0;
}
1
6 / 0 / 1
Регистрация: 01.10.2012
Сообщений: 64
01.10.2012, 21:53  [ТС] 4
Цитата Сообщение от lazybiz Посмотреть сообщение
isu, поможем. Покажи код на Паскале.
Посути решение есть уже на С,просто не понятны некоторые строки,вот и хотел попросить объяснить знающих людей)
Вывести на экран восьмеричное представление короткого целого
вот решение,как я понимаю

Добавлено через 2 минуты
Цитата Сообщение от kazak Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
 
int main(int argc, char* argv[])
{
   unsigned short int num;
   int i, count;
 
   printf("Enter the number: ");
   scanf("%d", &num);
   count = sizeof(unsigned short int)*8 / 3;
   for (i = count; i >= 0; i--)
   {
      printf("%d", (num >> i*3)&7);
   }
   printf("\n");
   return 0;
}
Спасибо большое)А можете объяснить, пожалуйста,для чайника)и чем отличается от вот этой программы
Вывести на экран восьмеричное представление короткого целого
0
3087 / 2408 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
01.10.2012, 22:53 5
Цитата Сообщение от isu Посмотреть сообщение
А можете объяснить, пожалуйста,для чайника)
Здесь перевод осуществляется путем разбиения двоичного числа на триады, и перевода кадой триады в десятичное число. Сам двоичный вид числа получать не надо, т.к. в памяти число представленно именно в двоичном виде.
C
1
count = sizeof(unsigned short int)*8 / 3
Вычисляем размер числовой переменной в битах и затем количество триад в ней.
C
1
2
3
4
for (i = count; i >= 0; i--)
{
   printf("%d", (num >> i*3)&7);
}
Здесь num >> i*3 означает битовый сдвиг влево на i*3 бит, при этом значения младших битов замещается значениями соседних старших битов, старший бит обнуляется, значение самого младшего бита отбрасывается. В нашем случае сдвиг происходит с шагом три бита, i задает номер триады.
(num >> i*3)&7 далее производим над сдвинутым числом поразрядное И с числом 7. 7 в двоичном виде предсавляется тремя единичными битами. После порязрядного И получим число с тремя младшими битами равными битам в i-ой триаде исходного числа.
printf("%d", (num >> i*3)&7); выводим все это на экран соответственно в десятичном виде.
for (i = count; i >= 0; i--) повторяем все это по количеству триад в числе.

Цитата Сообщение от isu Посмотреть сообщение
и чем отличается от вот этой программы
Думается простотой
1
6 / 0 / 1
Регистрация: 01.10.2012
Сообщений: 64
01.10.2012, 23:39  [ТС] 6
Спасибо огромное,все очень понятно объяснили,даже такой чайник,как я, все понял)
0
Evg
01.10.2012, 23:43
  #7

Не по теме:

kazak, в scanf'е %d используется для типа int (или unsigned), а вот для unsigned short следует использовать %hd или, что более честно, %hu. А так на 32-битных системах ты память испортишь. Правда в этом тесте из-за выравнивания и отсутствия второго short'а звёзды скорее всего станут таким образом, что ничего не испортится

2
2 / 2 / 0
Регистрация: 17.02.2017
Сообщений: 117
24.10.2017, 18:46 8
А тоже самое, только в двоичной как сделать? П.С. Сори за поднятую старую тему)
0
Evg
Эксперт CАвтор FAQ
21233 / 8246 / 636
Регистрация: 30.03.2009
Сообщений: 22,600
Записей в блоге: 30
24.10.2017, 21:20 9
Никак, почему-то афторы Си не посчитали это нужным
0
3087 / 2408 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
24.10.2017, 21:38 10
C
1
2
3
4
5
   count = sizeof(unsigned short int)*8 / 3;
   for (i = count; i >= 0; i--)
   {
      printf("%d", (num >> i*3)&7);
   }
=>
C
1
2
3
4
5
   count = sizeof(unsigned short int)*8;
   for (i = count; i >= 0; i--)
   {
      printf("%hu", (num >> i)&1);
   }
0
Evg
24.10.2017, 21:39     Используя битовые операции, вывести на экран восьмеричное представление беззнакового короткого целого
  #11

Не по теме:

А... "то же самое" - это вручную.... Чорд :(

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2017, 21:39

Используя битовые операции, вывести на экран восьмиричное представление беззнакового короткогоцелого
Знаю такая задача уже была на форуме в таком виде, но возможно ли её написать проще на уровне...

Поменять местами старший и младший полубайт беззнакового короткого целого
ребят, помогите Используя битовые операции, поменять местами старший и младший полубайт...

Выполнить операции беззнакового умножения и целочисленного беззнакового деления
Лабораторная работа по Архитектуре ЭВМ №2 Задание 1. Создать 3 переменные (размер 1 байт),...

Используя арифметические операции, определить и вывести сумму цифр трехзначного целого числа k (100<=k<=255)
1)осуществить: - проверку корректности по типу вводимых значений; - проверку диапазонов вводимых...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru