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

Поменять местами все соседние группы из двух битов в заданом беззнаковом длинном числе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести на экран бинарный код целого числа http://www.cyberforum.ru/cpp-beginners/thread13738.html
как вывести на экран бинарный код целого числа? Пример: int a=0; cin>>a; // консольный вывод бинарного значения а. // (например у 1 он 0001) Добавлено через 35 секунд можно на С можно на С++
C++ Числа Фибоначчи У меня вот какая проблема: Числа Фибоначчи определяются рекуррентной формулой: f0 = 0; f1 = 1; fn = fn-1 + fn-2; Начало последовательности имеет вид 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... .... http://www.cyberforum.ru/cpp-beginners/thread13725.html
C++ Проверка строки на наличии букв
Вообщем задача состоит в том, что мне нада сделать структуру паспорта, вести имя, фамилию и.т.д., это я сделал, но вот появилась проблема...как мне проверить при вводе даты(datagod,datames,dataden)...
C++ "Напишите и продемонстрируйте" - что от меня хотят?
Всех приветствую. Мне выдано задание, посвящённое работе со строками: Напишите функции и продемонстрируйте их работу: int strlen(char*); void strcpy (char * out, char * in); void strcat (char *...
C++ exeшник не запускает консоль http://www.cyberforum.ru/cpp-beginners/thread13691.html
привет! у меня такая проблема возникла - при запуске программы через cmd.exe все нормально работает. когда я просто кликаю на свой exeшник - выдается стандартное окошко винды о том, что возникла...
C++ Построчное чтение из файла Помогите пожалуйста, не могу доделать программу, точнее я её сделала но не так как бы мне хотелось. Вот код программы(прога рабочая) #include <stdio.h> #include <string.h> #include <stdlib.h>... подробнее

Показать сообщение отдельно
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
12.10.2008, 11:27
Испольхуя только битовые операции, написать программу, которая меняет местами все соседние групы с 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <math.h>
//32-specific
#define BITS 32
 
//cyclic shifting 
#define ROL(x, skew) ((x << (skew)) | (x >> (BITS - (skew))))
#define ROR(x, skew) ((x >> (skew)) | (x << (BITS - (skew))))
 
/*
 binary
 wwxxaabbccddyyzz -> xxwwbbaaddcczzyy
 * */
 
//32-specific
unsigned long PairSwap (unsigned long arg) {
 
    return ((ROL(arg, 2) & 0xccccccccU ) | (ROR(arg, 2) & 0x33333333U));
 
}
 
//print binary code
void print_bin(unsigned long arg) {
 
    for(unsigned long i = pow(2, sizeof(long) * 8 - 1); i > 0; i /= 2)
        printf("%c", (arg & i) > 0 ? '1': '0');
 
    printf("%c", '\n');
 
}
 
int main(void) {
 
    unsigned long a = 51;
    printf("a = ");
    print_bin(a);
    unsigned long b = PairSwap(a);
    printf("after PairSwap() a = ");
    print_bin(b);
 
}
Как видишь есть привязка к длине машинного слова. Если писать без привязки, без логических операций не обойтись, т. к. вычисление длины машинного слова будет в рантайме.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru