Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Задача на C++

Featured Replies

Ок.Дадоха ми задача на C++ чието условие е: Да се напише функция,която да връща цяло число без знак с огледално обърнати битове (двоични разреди) спрямо своя аргумент,също цяло число без знак. Цикъл: for Оператори: << >> & | Пример: вход: |0|0|0|0||||0000||||||||00000000 изход: 00000000||||||||0000||||0|0|0|0| ако някой случайно знае за какво стаа въпрос моля да напише командите в евентуалния ред.

Редактирано от colin_power (преглед на промените)

#include <string>
#include <bitset>
#include <iostream>

using namespace std;

int main (void)
{
    int i;
    unsigned int orig;
    unsigned int changed;
    unsigned int mirrored;

    changed = 0;
    mirrored = 0;
    orig = 0;
    
    cout << "Enter a number to convert" << endl;
    cout << "> ";
    cin >> orig;

    for (i = 0; i < 32; i++) {
        changed |= (((~((orig >> i) & 0x1)) << i) & (1 << i));
        mirrored |= (((orig >> i) & 0x1) << (32 - i));
    }

    cout << "Original number for conversion: " << bitset<32>(orig) << endl;
    cout << "converted number from original: " << bitset<32>(changed) << endl;
    cout << "mirrored number from original: " << bitset<32>(mirrored) << endl;
}

Редактирано от gueswho (преглед на промените)

Горният код само инвертира битовете.

Освен това orig и changed трябва да са само int тип. Иначе bitset не ги приема.

#include "stdafx.h"
#include <iostream>
using namespace std;


static unsigned long reverse(unsigned long x) {
 unsigned long h = 0;
 int i = 0;

 for(h = i = 0; i < 32; i++) {
  h = (h << 1) + (x & 1); 
  x >>= 1; 
 }

 return h;
}


int main ()
	        {
	unsigned int k=0;
            cin >> k;
			printf("%d", reverse(k));
        }
         

Горният код само инвертира битовете.

Освен това orig и changed трябва да са само int тип. Иначе bitset не ги приема.

Не ги приема само ако компилираш с Visual Studio. Това, което съм дал по-горе е тествано със GCC 4.5.0 и инвертира битовете. Сега е оправено и да ги mirror-ва.

Редактирано от gueswho (преглед на промените)

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.