Προς το περιεχόμενο

epeksigisi stin c


Toufas

Προτεινόμενες αναρτήσεις

Δημοσ.

lipon

o unpaiktable me voithise sta && || kai !

ok ta katalava

tora omos piga sta &, |, ^, ~, >> kai <<

exo to eksis paradigma (copy apo to vivlio olo)

>#include <stdio.h>

main()
{
   int x, y, z;
   
   x = 4321;
   y = 5678;
   printf("given x = %u, i.e, 0X%04X\n", x, x);
   printf("    y = %u, i.e., 0X%04X\n", y, y);
   z = x & y;
   printf("x & y returns %6u i.e. 0X%04X\n", z, z);
   z = x | y;
   printf("x | y returns %6u i.e. 0X%04X\n", z, z);
   z = x ^ y;
   printf("x ^ y returns %6u i.e. 0X%04X\n", z, z);
   printf("~x returns %6u i.e. 0X%04X\n", ~x, ~x);
   return 0;
   }

 

 

to apotelesma tou eprepe na einai :

>
given x = 4321, i.e, 0X10E1
   y = 5678, i.e., 0X162E
x & y returns   4128 i.e. 0X1020
x | y returns   5871 i.e. 0X16EF
x ^ y returns   1743 i.e. 0X06CF
~x returns 61214 i.e. 0XEF1E

 

 

ego omos perno:

 

>
given x = 4321, i.e, 0X10E1
   y = 5678, i.e., 0X162E
x & y returns   4128 i.e. 0X1020
x | y returns   5871 i.e. 0X16EF
x ^ y returns   1743 i.e. 0X06CF
~x returns 4294962974 i.e. 0XFFFFEF1E

 

 

plz kapios na mou eksigisei ti einai aftoi oi operators kai giati mou vgazei tetio apotelesma

thanks in advance

Δημοσ.

Αν κάνεις compile το συγκεκριμένο παράδειγμα σε έναν 16μπιτό compiler, όπως για παράδειγμα τον Turbo C++ 3.0 για DOS, δεν θα υπάρξει πρόβλημα.

 

Αυτό, μάλλον, συμβαίνει από την διαφορά που υπάρχει μεταξύ της εσωτερικής αναπαράστασης των τύπων bit ( ~ = inverts each bit ) σε 16μπιτούς και 32μπιτούς compilers (γενικά αποφεύγουμε να παίζουμε στην C σε επίπεδο bits με γενικούς τύπους καθώς η εσωτερική αναπαράσταση των bits κατά το C standard είναι «provider defined» δηλαδή αλλάζει από compiler σε compiler).

 

Για παράδειγμα, το sizeof(int) σε έναν 16μπιτό compiler απαιτεί 2( *8 = 16 ) bytes από την μνήμη ενώ, εξʼ ορισμού, σε έναν 32μπιτό 4 (*8 = 32) bytes μνήμης, πράγμα που σε χαμηλό επίπεδο επιφέρει ορισμένες αλλαγές..

 

Υ.Γ.

Το 0XFFFFEF1E … δείχνει ότι ο τύπος έχει γίνει overflowed (-n).

Δημοσ.

<< - shift left

>> - shift right

 

Ολισθήσεις αριστερά & δεξία κατά ένα bit.

ΠΧ: Έστω AL: 00010001, θα γίνει:

00100010 για ολίσθηση αριστερά &

00001000 για ολίσθηση δεξία.

 

& - Bitwise And

| - Bitwise Or

^ - Bitwise XOR

 

Εκτελούν της αντίστοιχες λογικές πράξεις bit προς bit μεταξύ 2 μεταβλητών:

Έστω X=7 (0111 binary) & Y=13 (1101 binary) έχουμε:

 

X&Y = 0101

X|Y = 1111

X^Y = 1010

 

~ - Bitwise Compliment

 

Συμπλήρωμα bit προς bit.

πχ για AL: 01000111

~AL = 10111000

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...