PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.c > Reverse biwise operation and xor?
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Reverse biwise operation and xor?

Réponse
 
LinkBack Outils de la discussion
Vieux 31/01/2008, 15h32   #1
Mrki [MCAD]
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Reverse biwise operation and xor?

I have a rather interesting code with 3 input variables that produce
result (this is a decoder and written by unknown author).

I have to get cd variable by konwing cl, fm and result of the
function...
is this possible?

Code:
#define MAKE_TAG_ID( cl, fm, cd)\
((((UL)(cl)) << ((TB -1) * 8)) | (((UL)(fm)) << ((TB -1) * 8)) |
(MAKE_TAG_ID_CODE (((UL)(cd)))))

And this is related code:

#define MAKE_TAG_ID_CODE(cd)\
( (cd < 31) ? (MAKE_TAG_ID_CODE1 (cd)):\
((cd < 128)? (MAKE_TAG_ID_CODE2 (cd)):\
((cd < 16384)? (MAKE_TAG_ID_CODE3 (cd)):\
(MAKE_TAG_ID_CODE4 (cd)))))


#define MAKE_TAG_ID_CODE1(cd) (cd << ((TB -1) * 8))


#define MAKE_TAG_ID_CODE2(cd) ((31 << ((TB -1) * 8)) | (cd << ((TB-2)
* 8)))


#define MAKE_TAG_ID_CODE3(cd) ((31 << ((TB -1) * 8))\
| ((cd & 0x3f80) << 9)\
| ( 0x0080 << ((TB-2) * 8))\
| ((cd & 0x007F) << ((TB-3)* 8)))



#define MAKE_TAG_ID_CODE4(cd) ((31 << ((TB -1) * 8))\
| ((cd & 0x1fc000) << 2)\
| ( 0x0080 << ((TB-2) * 8))\
| ((cd & 0x3f80) << 1)\
| ( 0x0080 << ((TB-3) * 8))\
| ((cd & 0x007F) << ((TB-4)*8)))

Thanx for any
  Réponse avec citation
Vieux 31/01/2008, 15h58   #2
Walter Roberson
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Reverse biwise operation and xor?

In article <dd38f620-5d5d-482b-8f35-d75b28036f7e@q21g2000hsa.googlegroups.com>,
Mrki [MCAD] <zeljko.markic@gmail.com> wrote:
>I have a rather interesting code with 3 input variables that produce
>result (this is a decoder and written by unknown author).


>I have to get cd variable by konwing cl, fm and result of the
>function...
>is this possible?


Not with that code, no.

Your Subject heading refers to 'xor', but there are no
xor operations in the code you show, only bitwise or.

>Code:
>#define MAKE_TAG_ID( cl, fm, cd)\
>((((UL)(cl)) << ((TB -1) * 8)) | (((UL)(fm)) << ((TB -1) * 8)) |
>(MAKE_TAG_ID_CODE (((UL)(cd)))))


>And this is related code:


>#define MAKE_TAG_ID_CODE(cd)\
>( (cd < 31) ? (MAKE_TAG_ID_CODE1 (cd)):\
>((cd < 128)? (MAKE_TAG_ID_CODE2 (cd)):\
>((cd < 16384)? (MAKE_TAG_ID_CODE3 (cd)):\
>(MAKE_TAG_ID_CODE4 (cd)))))


>#define MAKE_TAG_ID_CODE1(cd) (cd << ((TB -1) * 8))


Consider the case of cd < 31. In that case, MAKE_TAG_ID_CODE1
is used, the result of which will be (cd << ((TB -1) * 8)) .
That will be inclusive-or'd with (((UL)(cl)) << ((TB -1) * 8))
and with (((UL)(fm)) << ((TB -1) * 8)) . Notice that
all three parts are left-shifted by the same amount, so the
"interesting" part of the value will be cl | fm | cd
Now in any bit position where cl | fm is 1, you cannot tell
the difference between cl | fm and cl | fm | cd
because 1 bitwise or'd with anything else is still 1 .

Thus, you cannot uniquely calculate cd knowing cl, fm, and
the result of the function -- not unless you have further information
to know that the bottom five bits of cl and fm are always 0.
--
"I was very young in those days, but I was also rather dim."
-- Christopher Priest
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 04h14.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,09422 seconds with 10 queries