August 29, 2013

Daha önce hiç kullanmadım ve oldukça hız kazancı sağlayacağına da inanıyorum yapmak istediğim şey şu:

Elimdeki bir sayıyı atıyorum 17 2 nin katına yuvarlayacağım yani 17 ise 32
32 ise yine 32
33 ise 64.

Bitmasklar ile yapılabileceğini düşündüm eğer yapılabilirse nasıl? :)

Teşekkürler

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 29, 2013

Google da "rounding off to nearest power of 2" diye aradığımda Şöyle bir websitesi buldum...
http://graphics.stanford.edu/~seander/bithacks.html
bit hack adı altında bir ton işlem var vakit bulunca incelemek gerek :) Belki sizlerin de işine yarayan birşeyler vardır.

http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2

Çözüm ise bu :)

	auto size(){
		if(typeof(this).sizeof < 16) return 16;
		else{
			auto x = typeof(this).sizeof;
			x--;
			x |= x >> 1;  // handle  2 bit numbers
			x |= x >> 2;  // handle  4 bit numbers
			x |= x >> 4;  // handle  8 bit numbers
			x |= x >> 8;  // handle 16 bit numbers
			x |= x >> 16; // handle 32 bit numbers
			x++;
		}
	}

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]