Kezdőoldal » Számítástechnika » Programozás » Van olyan eset C-ben, amikor...

Van olyan eset C-ben, amikor egy szám ellentettje önmaga?

Figyelt kérdés
Beugratós kérdés, és nem matematikai szempontból kell nézni.
2014. okt. 2. 09:21
1 2
 1/12 Tengor ***** válasza:

Van. 0.

Ezen kívül az előjel nélküli típusok esetén azok a számok, amelyek bináris alakja 1-essel kezdődnek és utána csak 0 áll.

4 biten: 1000 + 1000 = 10000, de a túlcsordulás miatt csak 0000 marad meg, így 1000 + 1000 = 0

2014. okt. 2. 09:42
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:

0, mint a matematikában.

Vagy a C-ben már a definíciója a szám ellentetjének, mint a matematikában??? Érdekes lenne, de szívesen látok bármilyen hivatkozást.

2014. okt. 2. 10:48
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
Lebegőpontosnál van +0.0 meg -0.0, tehát ott nem jó.
2014. okt. 2. 11:04
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:
Ha nem matematikai szempontból nézed, akkor nézd gyakorlatiasan: menj végig a számokon és írd ki amelyik ellentettje önmaga.
2014. okt. 2. 14:37
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:
Előjel nélküli egész (vagy bármilyen) szám túlcsordulás miatt még nem lesz egy szám önmaga ellentettje.
2014. okt. 2. 15:25
Hasznos számodra ez a válasz?
 6/12 Tengor ***** válasza:
#5, hol hibázik a levezetésem?
2014. okt. 2. 15:39
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
# 6 Ott, hogy ezt a jelenséget nem úgy hívják. Például nyolc C-ben sem ellentettje nyolcnak. Legfeljebb csak bizonyos rendszereken nem fér ki.
2014. okt. 2. 15:41
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
7-es: a gépi számábrázolás jellegzetességei miatt nem ugyanazt az eredményt kapjuk, mint a matematikában. Kivéve, ha maradékosztályokkal számolunk.
2014. okt. 2. 22:03
Hasznos számodra ez a válasz?
 9/12 Tengor ***** válasza:

"A matematikában egy x szám ellentettje vagy additív inverze az a szám, amivel x-et összeadva az eredmény nulla."


Kód:

#include <stdio.h>


int main() {

unsigned char a = 128;

unsigned char b = a + a;

printf("%d + %d = %d\n", a, a, b);

return 0;

}


Kimenet: 128 + 128 = 0

2014. okt. 3. 07:52
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:

#include <stdio.h>

#include <limits.h>


int main() {

unsigned char a = UCHAR_MAX / 2 + 1;

unsigned char b = a + a;

printf("%u + %u = %u\n", a, a, b);

return 0;

}


kimenet: implementációfüggő, de ha az UCHAR_MAX páratlan, akkor találtunk egyet

2014. okt. 3. 19:02
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!