---
title: "Dela på en integer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/61462-dela-på-en-integer"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Viktor"
published: "2002-12-07T14:37:27.000Z"
updated: "2002-12-07T23:15:39.000Z"
replies: 7
views: 180
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/c-cpp/61462-dela-på-en-integer"
---

# Dela på en integer

## #1 — Viktor, 2002-12-07T14:37Z

Hej hopp, här kommer en fråga :)

Jag skulle vilja dela på en 32 bits integer så att jag kan sätta de 16 övre till ett tal och sedan de 16 undre till ett annat tal och sedan kunna läsa av dessa tal på något lätt och smidigt sätt, någon som vet hur jag ska göra? Jag "tror" att jag måste skifta (\>\> eller \<\<) men jag vet inte hur jag ska göra det.

/Viktor

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

## #2 — Marcus E, 2002-12-07T15:17Z

Använder du Windows finns det två makron för detta i windef.h:
\#define LOWORD(l)           ((WORD)((DWORD_PTR)(l) & 0xffff))
\#define HIWORD(l)           ((WORD)((DWORD_PTR)(l) \>\> 16))

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

## #3 — Viktor, 2002-12-07T15:21Z

Använder inte Widows, är det bara att kopiera in dessa macros ändå?

/Viktor

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

## #4 — Beatbox, 2002-12-07T15:24Z

I praktiken så är det ju en skiftning...

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

## #5 — Viktor, 2002-12-07T16:07Z

> **Beatbox skrev:**
>
> I praktiken så är det ju en skiftning...

Visst är det det men det gäller för en nybörjare att bli skickad i rätt riktning :)

Såhär blev det tillslut :)

```
#define LOWORD(I) (I & 0xFFFF)
#define HIWORD(I) (I >> 16)
#define MAKELONG(a, b) ((a & 0xFFFF) | ((b & 0xFFFF) << 16))

int i(MAKELONG(18,16));

cout << LOWORD(i) << endl << HIWORD(i) << endl;
```

bara omskrivningar av Windef funktionerna.

Tack för hjälpen :)

/Viktor

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

## #6 — Sang-drax, 2002-12-07T21:56Z

Om du nu ska använda makron (vilket du absolut inte ska) du skriv iallafall så här:

```
#define LOWORD(I) ((I) & 0xFFFF)
#define HIWORD(I) ((I) >> 16)
```

 

Fast gör så här i stället: (bättre på alla sätt)

```
inline int loword(int i)
{
  return i bitand 0xffff;
}
inline int hiword(int i)
{
  return i >> 16;
}
```

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

## #7 — Viktor, 2002-12-07T22:02Z

Då kommer en följd fråga :)
I vilken klass ska jag lägga dem? De behövs av flera delar (klasser) i programmet.
Nu har jag lagt macron i en include fil som inkluderas av alla delar av programmet.
Är det "ok" att ha samma funktion på flera ställen i progammet?

/Viktor

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

## #8 — Sang-drax, 2002-12-07T23:15Z

> **Viktor skrev:**
>
> Är det "ok" att ha samma funktion på flera ställen i progammet?

Ja, om den är markerad som "inline".

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

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/61462-dela-på-en-integer
