---
title: "Bitprogrammering - behöver ett bollplank!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/95036-bitprogrammering-behöver-ett-bollplank"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "aasah"
published: "2004-01-16T17:53:59.000Z"
updated: "2004-01-18T13:45:02.000Z"
replies: 1
views: 228
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/95036-bitprogrammering-behöver-ett-bollplank"
---

# Bitprogrammering - behöver ett bollplank!

## #1 — aasah, 2004-01-16T17:53Z

Jag har ett tal *$alts* för vilket gäller:
1) $alts innehåller totalt 4 bitar, alltså 0 \< $alts \< 15 (\< , ej \<= se nedan)
2) Bitmönstret för $alts innehåller 2 eller 3 ettor. Alltså kan $alts inte vara lika med 0, 1, 2, 4, 8 eller 15.

Jag har ett annat tal, *$comp*, som innehåller "komplementet" till $alts, 
framtaget genom 15 ^ $alts (XOR).

Jag har ett tredje tal, *$test* där jag vill kunna komma fram till följande:
1) Om $test har någon bit gemensam med $comp: 
Det borde inte vara något problem: 
if ($test & $comp) //funkar väl?

2 a) I så fall om $test har **exakt en** bit gemensam med $alts om $alts har två satta bitar, och i så fall vilken.

2 b) om $alts har 3 satta bitar, så ska det gälla om $test har en eller två av de bitarna satta, vill fortfarande veta vilka bitar det gäller.

Gemensamt för 2) är alltså att $test har en äkta delmängd av de satta bitarna i $alts.

Hur i hecklefjäll skriver man det??? Tacksam för hjälp för nu står det bara fullkomligt still högst upp...  :x 

*Jag tänkte först lägga detta i 
webForum \> OS & Programrelaterade forum \> Programmering \> Programmering - Övrigt, men sen tänkte jag att svaret kanske var beroende på språk, så därför ligger det här... Om det var fel, så ber jag om ursäkt!*

Permalänk: https://www.webforum.nu/p/95036

## #2 — aasah, 2004-01-18T13:45Z

Löste problemet, dock något förenklat, men det räcker för mig.

Bollplank är bra, då tvingas man tänka igenom problemet **själv** för att kunna förklara för andra... bara det löser många problem... ;)

Lösningen:

```
         if (($test & $alts) && // Någon bit gemensam
             (($test & $alts) != $alts)) { // Ej lika
            $junk = $test & $comp;
            if ($junk) { //Möjligen onödig koll?
               $rest = $test - $junk;
               //do what I want
            }
         }
```

Kan troligen skrivas enklare ändå...

Permalänk: https://www.webforum.nu/p/1254244

---

Tråden på webben: https://www.webforum.nu/amne/php/95036-bitprogrammering-behöver-ett-bollplank
