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

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

Восстановить пароль Регистрация
 
TheDanger227
 Аватар для TheDanger227
6 / 6 / 1
Регистрация: 27.11.2012
Сообщений: 58
22.09.2013, 23:03     Осуществить зеркальное отображение байта (unsigned char b) #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++ Зеркальное отображение массива
C++ Совместимость char и unsigned char
Зеркальное отображение слов C++
C++ const char и unsigned char
C++ Осуществить зеркальное отображение байта (unsigned char b)
C++ Unsigned char to vector
C++ Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ?
C++ Приведение типов unsigned char[2] to unsigned char [64]

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
Yandex
Объявления
22.09.2013, 23:44     Осуществить зеркальное отображение байта (unsigned char b)
Ответ Создать тему
Опции темы

Текущее время: 12:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru