0 / 0 / 0
Регистрация: 01.04.2018
Сообщений: 39
1

Системы счисления C++

20.11.2019, 22:51. Показов 2318. Ответов 3
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые!
Помогите с заданием, пожалуйста.

-Пользователь задает значение 2 байтов в десятичном формате. Если пользователь
ввел число больше 255, взять его по модулю 256. Если введенное значение
некорректно принять его равным 100.
- Вывести на экран введенные пользователем значения в десятичном и бинарном
виде. В бинарном виде число обязательно должно иметь 8 разрядов. Если в двоичной
форме числа меньше восьми разрядов, то нужно добавить необходимое количество
нулей слева.
- Выделить бит номер 7 в первом байте красным цветом.
- Произвести циклический сдвиг битов влево на 2 в первом байте, при этом бит номер
7 оставить на месте.
- Вывести на экран полученный байт в бинарном и десятичном виде, при этом в
бинарном виде выделить красным неподвижный бит номер 7.
- Сложить полученный и второй байт. Вывести результат в бинарном и десятичном
виде. В бинарном числе разделить байты пробелом, если результат занимает больше
одного байта.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2019, 22:51
Ответы с готовыми решениями:

Программа обучения переводу чисел из десятичной системы счисления в 2 10 и 16 систем счисления
дали задание составить программу нужно чтобы на экран выводилось это: Программа обучение...

Рекурсия: перевод целого числа из десятичной системы счисления в 9 систему счисления
Написать рекурсивную функцию перевода целого числа из десятичной системы счисления в 9-чную...

Простейший алгоритм перевода числа из 10 системы счисления в 16 ричную систему счисления
Помогите написать самый простой алгоритм перевода из 10 системы счисления в 16 ричную систему...

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

3
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
20.11.2019, 23:49 2
Простите, но могу только подсказать что использовать
std::bitset для работы с битами
std::stringstream для перевода значений в бинарный формат
Выделить один символ будет сложно..
Я лично знаю как это сделать только через winapi, но если будет целевая платформа не windows весь код обломается
1
0 / 0 / 0
Регистрация: 01.04.2018
Сообщений: 39
21.11.2019, 00:55  [ТС] 3
Нашел решение похожей задачи, но на языке C#. Помогите пожалуйста перевести данное чудо в C++

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp2
{
    class Program
    {
        static void ColorPrint(string s, int[] ColorIndexes)
        {
            for (int i = 0; i < s.Length; i++)
            {
                if (ColorIndexes.Contains(s.Length - i - 1))
                    Console.ForegroundColor = ConsoleColor.Red;
                else
                    Console.ResetColor();
                Console.Write(s[i]);
            }
            Console.WriteLine();
        }
 
        static void SetBit(ref int a, int n)
        {
            a |= 1 << n;
        }
 
        static void ResetBit(ref int a, int n)
        {
            a &= ~(1 << n);
        }
 
        static bool GetBit(int a, int n)
        {
            return ((a >> n) & 1) == 1;
        }
 
        static void SetRsetBit(ref int a, int n, bool v)
        {
            if (v)
                SetBit(ref a, n);
            else
                ResetBit(ref a, n);
        }
 
        static string ToOctet(int a)
        {
            return Convert.ToString(a, 2).PadLeft(8, '0');
        }
 
        static void Main(string[] args)
        {
            Console.Write("Enter a number between 0 and 255: ");
            int b;
            if (!int.TryParse(Console.ReadLine(), out b))
                b = 100;
            b %= 256;
            string sb = ToOctet(b);
            Console.WriteLine("{0}(10)={1}(2)", b, sb);
            Console.Write("Enter bit #: ");
            int bn = int.Parse(Console.ReadLine()) % 8;
            ColorPrint(sb, new int[] { 7, bn });
            int Shifted = b >> 2;
            SetRsetBit(ref Shifted, 7, GetBit(b, 7));
            SetRsetBit(ref Shifted, bn, GetBit(b, bn));
            Console.Write("{0}=", Shifted);
            ColorPrint(ToOctet(Shifted), new int[] { 7, bn });
            int r = b + Shifted;
            string rs = ToOctet(r);
            if (rs.Length > 8)
                rs = "0000000" + rs.Insert(1, " ");
            Console.WriteLine("{0}(10)={1}(2)", r, rs);
            Console.ReadKey();
        }
    }
}
0
131 / 116 / 25
Регистрация: 03.05.2017
Сообщений: 336
Записей в блоге: 1
21.11.2019, 05:11 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
 
void SetBit(int &a, int n) {
    a |= 1 << n;
}
void ResetBit(int &a, int n) {
    a &= ~(1 << n);
}
bool GetBit(int a, int n) {
    return !!(a & (1 << n));
}
void SetRsetBit(int &a, int n, bool v) {
    if(v)
        SetBit(a, n);
    else
        ResetBit(a, n);
}
char* ToOctet(int a) {
    static char result[16] = {0};
    for(int i = 0; i < 8; ++ i)
        result[i] = a & (128 >> i) ? '1' : '0';
    return result;
}
 
int main(int argc, char* argv[]) {
    int b = 100;
    int bn = 0;
    printf("Enter a number between 0 and 255: ");
    scanf("%d", &b);
    b %= 256;
    printf("%d(10)=%s(2)\r\n", b, ToOctet(b));
    printf("Enter bit #: ");
    scanf("%d", &bn);
    bn %= 8;
    
    int Shifted = b >> 2;
    SetRsetBit(Shifted, 7, GetBit(b, 7));
    SetRsetBit(Shifted, bn, GetBit(b, bn));
    printf("%d(10)=%s(2)", Shifted, ToOctet(Shifted));
    int r = b + Shifted;
    printf("%d(10)=%s(2)", r, ToOctet(r));
    return 0;
}
0
21.11.2019, 05:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2019, 05:11
Помогаю со студенческими работами здесь

Перевод строки из 2-ной системы счисления в 8-ную систему счисления
помогите пожалуйста как сделать перевод строки из 2 системы счисления на 8 систему счисления через...

Перевод числа из восьмеричной системы счисления в шестнадцатеричную систему счисления
Вот пример числа: 754 = 1EC 1000 = 200

Перевод из любой системы счисления в любую другую систему счисления (2-36)
Привет. 1 курс факультета ИВТ, изучаю С++ только один месяц. Из основного прошли строки, массивы,...

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


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

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

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