From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24730 invoked by alias); 12 May 2012 11:46:51 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 17077 Received: (qmail 10284 invoked from network); 12 May 2012 11:46:48 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.2 Received-SPF: pass (ns1.primenet.com.au: SPF record at internecto.net designates 176.9.245.29 as permitted sender) X-Virus-Scanned: Debian amavisd-new at mx1.internecto.net Date: Sat, 12 May 2012 13:41:58 +0200 From: Internecto List Subscriber To: Mikael Magnusson Cc: Bart Schaefer , zsh-users@zsh.org Subject: Re: logical NOT Message-ID: <20120512134158.181cf5df@internecto.net> In-Reply-To: References: <20120510135934.00f00537@internecto.net> <120510081212.ZM14892@torch.brasslantern.com> Organization: Internecto SIS X-Mailer: Claws Mail 3.8.0 (GTK+ 2.24.10; x86_64-unknown-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hello, On Thu, 10 May 2012 20:02:46 +0200 Mikael Magnusson wrote: > On 10/05/2012, Bart Schaefer wrote: > > On May 10, 1:59pm, Mark van Dijk wrote: > > } > > } Then I wondered about how to let zsh "reverse" a binary number > > and came } up with the logical NOT: simply flip each bit. > > > > As others have noted, that gives you the number what might be > > described as "upside down", rather than backward. > > > > mac2bin() { > > setopt localoptions extendedglob > > print ${(l:8::0:)${${(s.:.)1}//(#b)(*)/$(([#2]$match))}#2\#} > > } > > > > reverse() { > > setopt localoptions noksharrays > > local i a > > a=( ${(s::)*} ) > > for i in {$#a..1}; print -n -- $a[$i] > > print > > } > > > > torch% mac2bin AC:DE:48:00:00:80 > > 00000000 00000000 00110000 00000000 00000000 01010000 > > torch% reverse $(mac2bin AC:DE:48:00:00:80) > > 00001010 00000000 00000000 00001100 00000000 00000000 > > Reverse can also be implemented more confusingly with Oa, > reverse() { > setopt localoptions noksharrays > print -r -- "${(j::)${(@Oa)${(s::)*}}}" > } Thanks everyone for the useful examples and comments! :) Mark