Ugrás a tartalomhoz

circular shift

A Wikiszótárból, a nyitott szótárból


Főnév

circular shift (tsz. circular shifts)

  1. (informatika) A circular shift (magyarul: körkörös eltolás, ciklikus eltolás) egy soros eltolási művelet, amely egy sorozat elemeit eltolja balra vagy jobbra, úgy, hogy az eltolt elemek visszacsúsznak a másik végére. Ez a művelet gyakran előfordul informatikában, kriptográfiában, bitmanipulációban, és algoritmusokban.



🔁 Alapdefiníció

Legyen egy sorozat:

👉 Jobbra (right circular shift) 1 lépéssel:

👉 Balra (left circular shift) 1 lépéssel:



🧮 Egyszerű példa

Adott: A = [1, 2, 3, 4, 5]

  • Balra 2 lépéssel: [3, 4, 5, 1, 2]
  • Jobbra 2 lépéssel: [4, 5, 1, 2, 3]



🧠 Alkalmazási területek

Terület Használat
🧮 Bitmanipuláció Regiszterek, hash algoritmusok, titkosítás
🔐 Kriptográfia AES, SHA körkörös biteltolások
🧠 Memóriakezelés FIFO/gyűrűbuffer implementációk
🔁 Algoritmusok Permutációk, rotációs kódolások
🎮 Játékfejlesztés Pályarotációk, mátrixtranszformációk
📊 Képfeldolgozás Körkörös mátrixeltolások textúráknál



⚙️ C++ példa: körkörös balra eltolás

#include <iostream>
#include <vector>
#include <algorithm>

void circularShiftLeft(std::vector<int>& v, int k) {
    int n = v.size();
    k = k % n;
    std::rotate(v.begin(), v.begin() + k, v.end());
}

int main() {
    std::vector<int> data = {1, 2, 3, 4, 5};
    circularShiftLeft(data, 2);
    for (int x : data) std::cout << x << " ";
    return 0;
}
// Kimenet: 3 4 5 1 2

🔐 Bit szintű circular shift (C-ben)

uint8_t rotate_left(uint8_t x, int k) {
    return (x << k) | (x >> (8 - k));
}

uint8_t rotate_right(uint8_t x, int k) {
    return (x >> k) | (x << (8 - k));
}

🧩 TL;DR

A circular shift egy olyan eltolási művelet, amely során az elemek „körbe” mozognak – ami kicsúszik az egyik oldalon, visszakerül a másikra. Hasznos kriptográfiában, bitkezelésben, játéktechnikában és mindenhol, ahol soros adatmozgatás vagy rotáció szükséges.