Home > Archive > Prolog > September 2004 > Bit-manipulation in ISO Prolog
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Bit-manipulation in ISO Prolog
|
|
| Nameless 2004-08-16, 3:58 pm |
| ISO Prolog has five bit-manipulation predicates:
[color=darkred]
<< (bitwise left shift),
/\ (bitwise and),
\/ (bitwise or), and
\ (bitwise compliment).
So far so good, but how would one perform (rationally and
effectively)
1) bitwise xor, and
2) bitwise not
within the ISO Prolog framework?
TIA.
--
Mail sent to this email address is automatically deleted
(unread) on the server. Send replies to the newsgroup.
| |
| Bart Demoen 2004-08-16, 8:57 pm |
| Nameless wrote:
> ISO Prolog has five bit-manipulation predicates:
>
> << (bitwise left shift),
> /\ (bitwise and),
> \/ (bitwise or), and
> \ (bitwise compliment).
>
> So far so good, but how would one perform (rationally and
> effectively)
>
> 1) bitwise xor, and
> 2) bitwise not
>
> within the ISO Prolog framework?
Could you first give this newsgroup the definitions of "rationally" and
"effectively" that you have in mind, so that this newsgroups does not
try in vain to satisfy your question ?
I am just trying to save on guessing what you mean.
Cheers
Bart Demoen
| |
| Nameless 2004-08-17, 3:56 am |
| "Bart Demoen" <bmd@cs.kuleuven.ac.be> wrote in message
news:1092689141.597465@seven.kulnet.kuleuven.ac.be...
> Nameless wrote:
>
>
> Could you first give this newsgroup the definitions of
> "rationally" and "effectively" that you have in mind, so that
> this newsgroups does not try in vain to satisfy your question ?
> I am just trying to save on guessing what you mean.
No, you're just trying to be difficult (as usual). If you
don't understand English, then don't reply--it's as simple
as that. In fact, I'd really prefer that _you_ didn't reply
to any of my messages; I'm sure there are equally capable
but much nicer people who are able and willing to assist.
Of course, they may well qualify their reply with a
reservation that it may not be as rational and effective as
I had hoped--but beggers can't be choosers. ;)
--
Mail sent to this email address is automatically deleted
(unread) on the server. Send replies to the newsgroup.
| |
| Bart Demoen 2004-08-17, 8:56 am |
| Nameless wrote:
> No, you're just trying to be difficult (as usual).
If you ask a solution for a problem without the explicit mentioning
that it needs properties rational and effective, people in this
newsgroup (especially me) are inclined to deliver answers with
those properties. By explicitly mentioning them as requirements,
you make it sound like a trick question, that's why I asked.
But let's focus on the questions and not on their epitheton ornans.
You ask how to do bitewise not ... how is bitwise not different
from what \ does in ISO ? An example would be welcome.
xor(X,Y,Result) :- Result is (X /\ \Y) \/ ((\X) /\ Y).
Is that ok for you ?
> In fact, I'd really prefer that _you_ didn't reply
> to any of my messages
Once you put your message in a newsgroup, it is no longer
yours. Especially if you are nameless.
Cheers
Bart Demoen
| |
| Pere Montolio 2004-08-17, 8:56 am |
| > "Nameless" <news.mail@chello.no> wrote in message
> ...
I assume you know this answer for "xor":
xor(X,Y,Z) :- Z is ( (\ X) /\ Y ) \/ ( (\ Y) /\ X ).
(hope no typo mistakes).
and pray that you compiler/interpreter of prolog has a good optimizer.
(note: in general I look always for compilers with and easy interface
to C, in order to be able to add small low level functions).
I agree it is not a great answer, but it is all I have.
PS: Do you known any good reason to do not post with a real name?
| |
| Nameless 2004-08-17, 3:57 pm |
| "Pere Montolio" wrote in message
news:d0867bad.0408170058.5e355986@posting.google.com...
>
> I assume you know this answer for "xor":
>
> xor(X,Y,Z) :- Z is ( (\ X) /\ Y ) \/ ( (\ Y) /\ X ).
>
> (hope no typo mistakes).
>
> and pray that you compiler/interpreter of prolog has a good
> optimizer.
Right!
> (note: in general I look always for compilers with and easy
> interface to C, in order to be able to add small low level
> functions).
Pere, I think that's rather missing the point, namely the
absence of (the very useful) 'xor' in ISO Prolog.
From a practical point of view, since most Prologs are
actually implemented in C or a similar imperative language
that has bit-meddling functions, it would be most
surprising not to find matching Prolog predicates. Which is
all the more reason to wonder why ISO Prolog lacks 'xor'.
> I agree it is not a great answer, but it is all I have.
I came up with the same solution too, but this seemed so
clumsy I thought that there must be a better one. I guess
not. Many thanks for confirming this, Pere. I'll be
generous and thank Bart, too. ;)
> PS: Do you known any good reason to do not post with a real
> name?
Yes. ;)
--
Mail sent to this email address is automatically deleted
(unread) on the server. Send replies to the newsgroup.
| |
| Jens Kilian 2004-08-17, 3:57 pm |
| "Nameless" <news.mail@chello.no> writes:
> Which is all the more reason to wonder why ISO Prolog lacks 'xor'.
I suspect that the committee just couldn't come up with a symbolic operator
they liked :-)
--
mailto:jjk@acm.org phone:+49-7031-464-7698 (TELNET 778-7698)
http://www.bawue.de/~jjk/ fax:+49-7031-464-7351
As the air to a bird, or the sea to a fish,
so is contempt to the contemptible. [Blake]
| |
| Nick Wedd 2004-09-06, 4:02 pm |
| In message <d0867bad.0408170058.5e355986@posting.google.com>, Pere
Montolio <tmp123@menta.net> writes
>
>
>I assume you know this answer for "xor":
>
>xor(X,Y,Z) :- Z is ( (\ X) /\ Y ) \/ ( (\ Y) /\ X ).
Isn't
xor(X,Y,Z) :- Z is ( X \/ Y ) /\ ( \ (X /\ Y) ).
faster? It saves one \.
Nick
--
Nick Wedd nick@maproom.co.uk
| |
| Pere Montolio 2004-09-07, 4:10 pm |
| Probably, it is.
|
|
|
|
|