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

С операциями сдвига из 123456 получить 102030405060 - C++

Войти
Регистрация
Восстановить пароль
 
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
28.09.2010, 22:07     С операциями сдвига из 123456 получить 102030405060 #1
Из целого числа получить новое путем вставки после каждой цифры 0 (231457 -> 2030405070).
Всё это с помощью опеаций сдвига и поразрядных операций (d=0x7 и др)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2841 / 1778 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.09.2010, 22:08     С операциями сдвига из 123456 получить 102030405060 #2
Ну и в чём проблема ?
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
28.09.2010, 22:09  [ТС]     С операциями сдвига из 123456 получить 102030405060 #3
Asics^, Ну не пойму как оно сдвигает? допустим число 123 <<3 это как пишет что это 3 а почему? не пойму
asics
Freelance
Эксперт C++
 Аватар для asics
2841 / 1778 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.09.2010, 22:15     С операциями сдвига из 123456 получить 102030405060 #4
Возмите учебник и почитайте про ети сдвиги,уверен поможет.
juli.ya92
2 / 2 / 0
Регистрация: 25.09.2010
Сообщений: 82
28.09.2010, 22:16  [ТС]     С операциями сдвига из 123456 получить 102030405060 #5
Asics^, спасибо очень помогли до этого я и сама как нибудь додумалась.
asics
Freelance
Эксперт C++
 Аватар для asics
2841 / 1778 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.09.2010, 22:22     С операциями сдвига из 123456 получить 102030405060 #6
Всегда пожалуйста
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9384 / 5434 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
28.09.2010, 22:34     С операциями сдвига из 123456 получить 102030405060 #7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdint.h>
 
uint64_t insert_zeros(uint64_t num){
    uint64_t inverse, ret;
    for ( inverse = 0; num; num /= 10, inverse *= 10 )
        inverse += num % 10;
    for ( ret = 0; inverse; inverse /= 10, ret *= 100 )
        ret += inverse % 10;
    return ret / 10;
}
 
int main(void){
    uint64_t num;
    while ( printf("Number: ") && scanf("%llu", &num) && num )
        printf("With zeros: %llu\n", insert_zeros(num));
    return 0;
}
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
29.09.2010, 00:08     С операциями сдвига из 123456 получить 102030405060 #8
juli.ya92 с тебя причитается
Если что не понятно - спрашивай, попробую разжевать
Вобщем 12345 превращается в 102030405

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    unsigned int n = 12345;
    cout << "Before: " << n << endl;
    n = (n & 0x1001);
    n = (n | 0x614DC45);
    cout << "After: " << n << endl;
 
        system("pause");
}
Prividenie
74 / 74 / 6
Регистрация: 05.10.2008
Сообщений: 233
29.09.2010, 23:39     С операциями сдвига из 123456 получить 102030405060 #9
видел закрыли тему в которой было указано в 8-й сист. сч. можно так, а можно и как то укоротить
C
1
2
3
4
5
6
7
8
#include <stdio.h>
int main()
{
unsigned int a = 0x7D63;//76543
a = ( (a >> 12) << 27 ) | ( ( (a & 0xFFF) >> 9 ) << 21 ) | ( ( (a & 0x1FF) >> 6 ) << 15 ) | ( ( (a & 0x3F) >> 3 ) << 9 ) | ( (a & 0x7) << 3 );
printf("%o", а);
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2016, 13:14     С операциями сдвига из 123456 получить 102030405060
Еще ссылки по теме:

C++ Дано действительное число а, не пользуясь ни какими другими арифметическими операциями, кроме умножения получить а^5 и а^13 за 5 операция
C++ Не пользуясь никакими арифметическими операциями, кроме умножения, получить: a4, a12 и a28 за шесть операций
Не пользуясь никакими другими арифметическими операциями, кроме умножения, получить А в 21 степени, за шесть операций. C++
Ввести целое число (например 123456), а вывести в обратном порядке C++
Работа с битовыми операциями C++

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

Или воспользуйтесь поиском по форуму:
Aklasan123
0 / 0 / 0
Регистрация: 27.06.2016
Сообщений: 3
27.06.2016, 13:14     С операциями сдвига из 123456 получить 102030405060 #10
TheMachinist, А как получить из числа 231457 -> 2030405070
Yandex
Объявления
27.06.2016, 13:14     С операциями сдвига из 123456 получить 102030405060
Ответ Создать тему
Опции темы

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