From: Daniel Barker Newsgroups: comp.os.msdos.djgpp Subject: Re: shifting left, and shifting right... Date: Wed, 21 Jul 1999 10:53:40 +0100 Organization: Edinburgh University Lines: 22 Message-ID: <379598A4.2D30C907@holyrood.ed.ac.uk> References: <37937D02 DOT 5D28D561 AT geocities DOT com> <7n0mc8$382$1 AT newssrv DOT otenet DOT gr> NNTP-Posting-Host: dialup-115.publab.ed.ac.uk Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: scotsman.ed.ac.uk 932550712 18324 129.215.38.115 (21 Jul 1999 09:51:52 GMT) X-Complaints-To: usenet AT scotsman DOT ed DOT ac DOT uk NNTP-Posting-Date: 21 Jul 1999 09:51:52 GMT X-Mailer: Mozilla 4.51 [en] (Win98; I) X-Accept-Language: en To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Pavlos wrote: [good explanation of bitwise operations snipped] I'd just like to add three warnings. (1) Do not right shift a variable of a signed type. The result is implementation-defined in C if the variable has a negative value. (2) With an n-bit quantity, do not shift by more than n-1. e.g., do not shift athe value of a 32-bit type more than 31, either to left or right. The result is undefined in C. (3) Do not attempt to shift by a negative number of bits. The result is undefined in C. Source: Kernighan & Ritchie, 2nd edition, Section A7.8; see also Section 2.9. -- Daniel Barker.