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

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

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

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

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

А вот 3-я задача,только не очень понимаю,что к чему
Вывести на экран восьмеричное представление короткого целого
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2012, 17:31
Ответы с готовыми решениями:

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

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

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

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

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

10
castaway
Эксперт С++
4938 / 3043 / 455
Регистрация: 10.11.2010
Сообщений: 11,125
Записей в блоге: 10
Завершенные тесты: 1
01.10.2012, 21:19 2
isu, поможем. Покажи код на Паскале.
0
kazak
3063 / 2384 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
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
isu
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
01.10.2012, 21:53
kazak
3063 / 2384 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
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
isu
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
artem312312
1 / 1 / 0
Регистрация: 17.02.2017
Сообщений: 77
24.10.2017, 18:46 8
А тоже самое, только в двоичной как сделать? П.С. Сори за поднятую старую тему)
0
Evg
Эксперт CАвтор FAQ
19892 / 7523 / 574
Регистрация: 30.03.2009
Сообщений: 20,984
Записей в блоге: 30
24.10.2017, 21:20 9
Никак, почему-то афторы Си не посчитали это нужным
0
kazak
3063 / 2384 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
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
24.10.2017, 21:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2017, 21:39
Привет! Вот еще темы с ответами:

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

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

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


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

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

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