برای اعداد صحیح منفی بزرگترین بیت (سمت چپترین) یک هست و اگه به تعداد کافی بیتهای یک متغیر شیفت بشه به سمت راست، تنها چیزی که باقی میمونه فقط همون بیت علامت هست.
مثلاً اگه عدد int
در ماشین ۳۲ بیتی باشه، ۳۱ شیفت به سمت راست باعث میشه بیت علامت باقی بمونه و بقیهی بیتها صفر بشه.
تعداد شیفت یکی کمتر از تعداد بیتهای عدد هست. بنابراین sizeof(int)*CHAR_BIT-1
این مقدار و برای ما میسازه. در ادامه >>sizeof(int)*CHAR_BIT-1
تعداد شیفت لازم رو انجام میده و در نهایت همون یک بیت علامت باقی میمونه
مثلاً برای عدد 10000110-01010001-10101010-00001011
انجام ۳۱ شیفت به سمت راست 00000000-00000000-00000000-00000001
رو تولید میکنه که عدد یک هست.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)