Groups | Search | Server Info | Login | Register
Groups > comp.lang.lisp > #60730
| From | Madhu <enometh@meer.net> |
|---|---|
| Newsgroups | comp.lang.lisp |
| Subject | Re: the unsigned right shift operator in CL >>> |
| Date | 2025-10-23 16:34 +0530 |
| Organization | Motzarella |
| Message-ID | <m3sef9yj49.fsf@pison.robolove.meer.net> (permalink) |
| References | <m3ms5s3atl.fsf@pison.robolove.meer.net> <87wm4uu3j6.fsf@parhasard.net> <86tszy392o.fsf@williamsburg.bawden.org> <87jz0utvlt.fsf@parhasard.net> |
* Aidan Kehoe <87jz0utvlt.fsf@parhasard.net> :
Wrote on Thu, 16 Oct 2025 21:55:26 +0100:
> Alan Bawden:
> > Aidan Kehoe <kehoea@parhasard.net> writes:
> > Something like:
> >
> > (defun fixed-width-ash (width value count)
> > (ash (logand value (lognot (ash -1 width))) count))
>
> To comment on my own code; this won't do the desired fixed-width treatment of
> COUNT is positive, the logand would need to be done on the result of the #'ash.
> But the discussion was about implementing >>>, where COUNT is negative.
>
> > Construct an integer of the desired width that is all 1s, logand it
> > with VALUE, then shift by COUNT.
> >
> > Your compiler will probably recognize that this is equivalent to:
> >
> > (defun fixed-width-ash (width value count)
> > (ash (logandc2 value (ash -1 width)) count))
something like this then, does it miss out any case?
(defun fixed-width-ash (width value count)
(if (< count 0)
(ash (logand value (lognot (ash -1 width))) count)
(ash (logandc2 value (ash -1 width)) count)))
> > But I would write it that way in the first place because I like to
> > remember that the PDP-10 had an ANDCM instruction...
>
> I don't expect to remember any other PDP-10 instructions, but I might remember
> this one. Thanks!
Back to comp.lang.lisp | Previous | Next — Previous in thread | Next in thread | Find similar
the unsigned right shift operator in CL >>> Madhu <enometh@meer.net> - 2025-10-15 12:34 +0530
Re: the unsigned right shift operator in CL >>> Aidan Kehoe <kehoea@parhasard.net> - 2025-10-16 19:04 +0100
Re: the unsigned right shift operator in CL >>> Alan Bawden <alan@csail.mit.edu> - 2025-10-16 16:06 -0400
Re: the unsigned right shift operator in CL >>> Aidan Kehoe <kehoea@parhasard.net> - 2025-10-16 21:55 +0100
Re: the unsigned right shift operator in CL >>> Madhu <enometh@meer.net> - 2025-10-23 16:34 +0530
Re: the unsigned right shift operator in CL >>> Alan Bawden <alan@csail.mit.edu> - 2025-10-24 02:29 -0400
Re: the unsigned right shift operator in CL >>> Madhu <enometh@meer.net> - 2025-10-25 21:00 +0530
Re: the unsigned right shift operator in CL >>> Kaz Kylheku <046-301-5902@kylheku.com> - 2026-03-12 18:00 +0000
Re: the unsigned right shift operator in CL >>> Stefan Monnier <monnier@iro.umontreal.ca> - 2026-03-12 16:34 -0400
Re: the unsigned right shift operator in CL >>> Kaz Kylheku <046-301-5902@kylheku.com> - 2026-03-16 20:14 +0000
Re: the unsigned right shift operator in CL >>> Madhu <enometh@meer.net> - 2025-10-23 16:38 +0530
csiph-web