/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Hvordan ser -1 ud bitvist i C++?
Fra : Flare


Dato : 10-06-03 14:56


Ja spørgsmålet er i subj.

Jeg snakker om C på en std. intel compatible CPU på windows.

Ser den sådan her ud: ?

10000000000000000000000000000000000001 (30 nuller)

Eller er dette ikke rigtig antaget?

Mvh
Anders



 
 
Jens Axel Søgaard (10-06-2003)
Kommentar
Fra : Jens Axel Søgaard


Dato : 10-06-03 15:04

Flare wrote:
> Ja spørgsmålet er i subj.
>
> Jeg snakker om C på en std. intel compatible CPU på windows.
>
> Ser den sådan her ud: ?
>
> 10000000000000000000000000000000000001 (30 nuller)
>
> Eller er dette ikke rigtig antaget?

Det kommer an på om ovenstående er en signed int,
unsigned int eller en double.

--
Jens Axel Søgaard



Flare (10-06-2003)
Kommentar
Fra : Flare


Dato : 10-06-03 15:37

> Det kommer an på om ovenstående er en signed int,
> unsigned int eller en double.

Tallet er signed da det ligger i en signed int.

Anders



Robert Larsen (10-06-2003)
Kommentar
Fra : Robert Larsen


Dato : 10-06-03 15:39

Flare wrote:

> Ja spørgsmålet er i subj.
>
> Jeg snakker om C på en std. intel compatible CPU på windows.
>
> Ser den sådan her ud: ?
>
> 10000000000000000000000000000000000001 (30 nuller)
>
> Eller er dette ikke rigtig antaget?
>
> Mvh
> Anders
>
>

Træk ét fra det positive tal og vend alle bittene. Med signed int (32
bits) er det altså:

1 = 00000000000000000000000000000001
-1 = 11111111111111111111111111111111

30 = 00000000000000000000000000011110
-30 = 11111111111111111111111111100010

VH
Robert


Flare (10-06-2003)
Kommentar
Fra : Flare


Dato : 10-06-03 16:22

> Træk ét fra det positive tal og vend alle bittene. Med signed int (32
> bits) er det altså:
>
> 1 = 00000000000000000000000000000001
> -1 = 11111111111111111111111111111111
>
> 30 = 00000000000000000000000000011110
> -30 = 11111111111111111111111111100010

Takker....Hvem har fået den syge ide at gøre det på den måde.

Mvh
Anders



Bertel Lund Hansen (10-06-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 10-06-03 16:34

Flare skrev:

>Takker....Hvem har fået den syge ide at gøre det på den måde.

Dem der synes at 0 kun må kodes på én måde.

Hvad ville du hellere have?

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Robert Larsen (10-06-2003)
Kommentar
Fra : Robert Larsen


Dato : 10-06-03 16:51

Bertel Lund Hansen wrote:
> Flare skrev:
>
>
>>Takker....Hvem har fået den syge ide at gøre det på den måde.
>
>
> Dem der synes at 0 kun må kodes på én måde.
>

Og dem som synes at man skal kunne lægge et negativt og et positivt tal
sammen (dog med mulighed for overflow) uden at skulle konvertere det
negative tal til et positivt og trække fra i stedet.

Robert


Christian Larsen (10-06-2003)
Kommentar
Fra : Christian Larsen


Dato : 10-06-03 16:58

"Flare" <dct_flare@hotmail.com> wrote in news:3ee5f786$0$24718
$edfadb0f@dread14.news.tele.dk:

> Takker....Hvem har fået den syge ide at gøre det på den måde.

Det er nu ikke så syg en idé. Forestil dig fx en signed char med værdien
-3. Den repræsenteres således:

11111101

Hvis du kigger på dette tal som et binært tal (og ser bort fra sign-
bit'en), og lægger 3 til, får du:

11111101
+ 11
= 100000000

Det første 1-tal i resultatet bliver skåret væk, da en signed char kun er
på 8 bit, og voila, du har værdien nul. Noget tilsvarende sker ved
subtraktion.

Vh Christian

Mogens Hansen (10-06-2003)
Kommentar
Fra : Mogens Hansen


Dato : 10-06-03 20:34


"Flare" <dct_Flare@hotmail.com> wrote
>
> Ja spørgsmålet er i subj.

Generelt ved man det ikke.
Det er tilladt at bruge 1's complement, 2's complement og signed magnitude
(§3.9.1-7).
Søg eventuelt på Google for at finde en beskrivelse af disse
representationer.

>
> Jeg snakker om C på en std. intel compatible CPU på windows.

Det er 2'ers komplement maskiner.
Altså -1 er representeret som 0xffffffff - altså alle 32 bit sat til 1.

>
> Ser den sådan her ud: ?
>
> 10000000000000000000000000000000000001 (30 nuller)

Det er "signed magnitude" representation.

Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste