اطلاعیه

Collapse
No announcement yet.

جستجوی نزدیکترین بیت 1 شده در یک بایت

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    جستجوی نزدیکترین بیت 1 شده در یک بایت

    دوستان C نویس
    مسئله ای برام پیش اومده گفتم نظر دوستان رو هم بدونم
    نیاز به تابعی هست که نزدیکترین بیت 1 شده رو به بیتی که اعلام میکنیم (در یک بایت یا ورد) اعلام کنه

    بطور مثال بیت 3 از یک بایت انتخاب شده که بیت 1 و بیت 6 مقدار یک رو دارند
    حال چطور تابع ما خروجی 1 رو بده
    فاصله بیت 3 تا بیت 1= 2
    فاطله بیت 3 تا بیت 6 = 3
    هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
    بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
    میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

    تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

    #2
    پاسخ : جستجوی نزدیکترین بیت 1 شده در یک بایت

    دوست عزیز
    این کد رو براتون نوشتم
    لینکش رو گذاشتم براتون
    http://www.4shared.com/file/ShPbNkBi/HamidRezaT.html

    دیدگاه


      #3
      پاسخ : جستجوی نزدیکترین بیت 1 شده در یک بایت

      با تشکر ولی فکر کنم کمی متفاوته با اونچه فکر میکردم
      کد:
      myWord=0b01000010;
      selectedBit=3;
      minimum=7; //Set to maximum possible distance
      
      for(i=0;i<7;i++)
      {
       if(i!=selectedBit)
       {
        if(myWord & 1<<i) // Check if this bit is 1?
        {
         distance=abs(selectedBit-i);  //اینجا 
         if(distance<minValue)
         {
          minValue=distance;
          minIndex=i;
         }
        }
       }
      }

      تابعی که خودم نوشم ولی الگوریتم جستجو رو نداره
      کد:
      char go_now(char a)
      {
       char i,j; 
       
       
       for(i=a;i>0;i--)   
       {
       if((select1f & (1<<(i-1))) && i != a)  
       { return i; } 
       } 
       
        for(j=a;j<9;j++)    
       {                     
       if((select1f & (1<<(j-1))) && j != a)  
       { return j; } 
       } }

      هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
      بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
      میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

      تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

      دیدگاه


        #4
        پاسخ : جستجوی نزدیکترین بیت 1 شده در یک بایت

        با سلام،

        اصولیش اینه که یک متغیر بیتی تعریف کنی و روی اون کار کنی.....

        اگر از سی استاندارد استفاده میکنی :
        کد:
        	union BYTE {
        		struct {
        			unsigned char 		bit0:1;
        			unsigned char 		bit1:1;
        			unsigned char 		bit2:1;
        			unsigned char 		bit3:1;
        			unsigned char 		bit4:1;
        			unsigned char 		bit5:1;
        			unsigned char 		bit6:1;
        			unsigned char 		bit7:1;
        			};
        		
        		unsigned char 			value;
        	};
        
        
        
        
        
        volatile union	BYTE											Temp;
        
        Temp.value //مقدار کل
        Temp.bit0		// بیت صفرم
        Temp.bit1		// بیت یکم
        						// الی آخر

        اگر از کدویژن استفاده میکنی :

        کد:
        #pragma used+
        	sfrb Btemp = 0;
        #pragma used-
        
        Btemp		//مقدار کل
        Btemp.0	//بیت صفرم
        Btemp.1 //بیت یکم
        		//الی آخر

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

        Sh_Nourbakhsh@Yahoo.com

        http://s2.picofile.com/file/7170362468/_Wall_e_.jp

        دیدگاه

        لطفا صبر کنید...