Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TheDanger227
6 / 6 / 1
Регистрация: 27.11.2012
Сообщений: 58
#1

Осуществить зеркальное отображение байта (unsigned char b) - C++

22.09.2013, 23:03. Просмотров 454. Ответов 1
Метки нет (Все метки)

Проблема в следующем (12 строка), если использовать cin то в двоичной системе выводит не правильно, с начала записывает в конец, допустим если ввести 25, будет 00110010 вместо 00011001, а если использовать scanf_s то все правильно выводит, но после завершения вылазит ошибка: Run-Time Check Failure #2 - Stack around the variable 'z' was corrupted. Как исправить?
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(0,"Rus");
    unsigned char b, r; 
    unsigned char z; 
    cout<<"Введите число: ";
    cin>>z;
    //scanf_s("%d",&z);
 
// вывод по основанию 2 
    cout<<"Байт числа: ";
    b = 1 << ((sizeof(z)<<3)-1);
    for(int i=0; i<(sizeof(z)<<3); i++) 
    { 
        if(z & b) cout << "1"; else cout << "0"; 
        b = b >> 1; 
    } 
    cout << endl; 
 
// сам алгоритм 
    b = 1; 
    r = 0; 
    for(int k=0; k < (sizeof(z)<<3); k++) 
    { 
        r = r << 1; 
        if(z & b) r = r | 1; 
        b = b << 1; 
    } 
    cout << endl; 
    cout<<"Зеркальное отображени байта: ";
// вывод по основанию 2 
    b = 1 << ((sizeof(z)<<3)-1) ; 
    for(int i=0; i<(sizeof(z)<<3); i++) 
    { 
        if(r & b) cout << "1"; else cout << "0"; 
        b = b >> 1; 
    } 
    cout << endl; 
 
    cin.get(); 
    system("pause");
    return 0;
}
 
 
}
Добавлено через 39 минут
кто-нибудь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 23:03     Осуществить зеркальное отображение байта (unsigned char b)
Посмотрите здесь:
C++ Осуществить зеркальное отображение байта (unsigned char b)
C++ Приведение типов unsigned char[2] to unsigned char [64]
C++ Неверная конверсия из char* в unsigned char*
C++ Совместимость char и unsigned char
C++ const char и unsigned char
C++ Unsigned char * в char * и наоборот
Типы данных - где нужно использовать char, а где unsigned char? C++
зеркальное отображение матрицы C++
Зеркальное отображение слов C++
C++ Зеркальное отображение массива
C++ unsigned char 0....255?!
C++ Работа с unsigned char

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
borodat
Заблокирован
22.09.2013, 23:44     Осуществить зеркальное отображение байта (unsigned char b) #2
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
#include <iostream>
#include <iomanip>
 
typedef unsigned char byte_t;
 
void set_mirror (byte_t * var) {
 
    byte_t t = *var;
 
    t = t >> 4 | t << 4;
    t = ((t & 0xCC) >> 2) & 0x33 | ((t & 0x33) << 2) & 0xCC;
    t = ((t & 0xAA) >> 1) & 0x55 | ((t & 0x55) << 1) & 0xAA;
 
    *var = t;
}
 
int main () {
 
    byte_t var = 0xCA;
    set_mirror( &var );
 
    std::cout << std::hex << (int)var << std::endl;
    return 0;
}
Ответ Создать тему
Опции темы

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