تعیین زوج و فرد یک عدد با استفاده از عملیات بیتی

تعیین زوج و فرد یک عدد با استفاده از عملیات بیتی.

تعیین زوج و فرد یک عدد با استفاده از عملیات بیتی

برای این کار روش های مختلفی وجود دارد مثلا با استفاده از

۱-عملگر باقی مانده ی تقسیم (%):

همون طور که در ریاضیات عددی زوج است که باقی مانده ی تقسیم اش بر دو ، صفر باشد. پس به عنوان یک روش با استفاده از % زوج بودن عددی را تعیین میکنیم.

boolean is_even = (n % 2 == 0);

۲-تعیین زوج و فرد با استفاده از عملیات بیتی و عملگر بیتی &:

برای این کار ما به آخرین رقم از مقدار باینری عدد نیاز داریم که با and کردن آن با یک به دست می آید. به این صورت:اگر حاصل یک باشد، عدد فرد است و اگر صفر باشد، عدد زوج است.

number & 1

برای مثال :

۱-پنج فرد است پس:

۰۰۰۰ ۰۱۰۱ & 0000 0001 = 0000 0001

۲- و شش زوج است:

۰۰۰۰ ۰۱۱۰ & 0000 0001 = 0000 0000

و نمونه کد جاوا :

if( (number&1) == 0){
      system.out.println("even");
   }else{
        system.out.println("odd");
      }

در زیر کاپوت :

همان طور که میدانید عملگر منطقی and (&) دو مقدار دودویی با طول مساوی دریافت کرده و بر روی هر جفت بیت متناظر، عملیات عطف منطقی را انجام می‌دهد. نتیجه وقتی ۱ می‌شود که اولین بیت و دومین بیت هر دو با هم ۱ باشند، در غیر این صورت صفر خواهد بود.

جدول زیر را در نظر بگیرید:

۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹
۱ ۲ ۴ ۸ ۱۶ ۳۲ ۶۴ ۱۲۸ ۲۵۶ ۵۱۲

دو به توان هر عدد صحیح غیر منفی و صفر ، همیشه زوج خواهد بود. (نمی دونم صفر مثبته یا منفی؟)

کمترین ارزش را سمت راست ترین رقم خواهد داشت. و مقدار آن در صورت صحیح بودن یک خواهد بود.

عدد یک در مبنای دو برابر با یک است و به سمت چپ تمامی ارقام صفر خواهند بود و این هیچ تاثیری بر ارزش عدد ندارد. (۰۰۰۰۰۰۰۱) .

هر عدد فردی یک عدد زوج به علاوه یک است. پس اگر کم ارزش ترین رقم در مبنای دو صحیح باشد و دارای مقدار یک ، عدد فرد خواهد بود و در غیر این صورت عدد زوج است.

به عبارتی دیگر عطف منطقی با عدد یک، باعث میشود تمام ارقام عدد مورد آزمایش به غیر از آخرین رقم صفر شود و اگر رقم آخر یک باشد نتیجه یک می شود و فرد بودن عدد مورد آزمایش را نتیجه میدهد.

 

 

 

 

مطالب غیر مرتبط:

restart برنامه نوشته شده با جاوا (+).

 

یک دیدگاه در “تعیین زوج و فرد یک عدد با استفاده از عملیات بیتی”

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site uses Akismet to reduce spam. Learn how your comment data is processed.