Bit Level Manipulation (Posted on April 6th, 2013)

Bit level manipulation allows us to write more efficient code due to the fact that CPU's are really good at handling bits. In fact that's all they really do. Even if you've never played around with bit manipulation it's likely that your compiler has modified your code to use bit manipulation.

Finding Odd AND Even Numbers

At some point everyone's probably written some code to this effect:

def odd_or_even(number):
    if number % 2 == 0:
        return "Even"
    return "Odd"

However, as we all know long division can be kind of annoying, so we don't want our program to have to do any of that. We all know that to check if a number is odd or even we just need to check the last digit. Well it turns out that the same is true for binary. In binary there is only one slot that contains an odd number, the first one. Therefore, any number with a 1 set in the first slot has to be an odd number. Most compilers realize this and change our code to something like:

def odd_or_even(number):
    if number & 1 == 0:
        return "Even"
    return "Odd"

The "&" operator performs a bitwise AND. If our number was 7 then it would yield 1 because only the first binary column for both numbers contains a 1. Likewise if the number was 6 then we'd get back 0.

111 (7)
001 (AND with 1)
001

110 (6)
001 (AND with 1)
000

Slide to the Left. Now Slide to the Right

Another optimization most compilers make involves division and multiplication. You probably write something like:

def double(number):
    return number * 2

def half(number):
    return number / 2

However, what you're really doing is shifting one bit to the left or one bit to the right respectively.

def double(number):
    return number << 1

def half(number):
    return number >> 1

If our number was 6 then it would yield 12 and 3.

0110 (6)
1100 (6 after being left shifted = 12)

110 (6)
011 (6 after being right shifted = 3)

Swapping Values Without a Temporary Variable

One cool trick that can be done with bit level manipulation is swapping the values of two variables with XOR. XOR compares each column and checks if they are different or the same. If they are different than the new value for that column is one, otherwise it is 0. We can take advantage of this and swap two values in place

Wikipedia has a great graphic showing how this is done with 10 and 3.

Swapping 10 and 3 with XOR

The code for this is as such:

x = 10
y = 3
x ^= y
y ^= x
x ^= y

On a side note, if you're using Python or Ruby you could also do something like this:

x, y = y, x

I hope you found these optimizations/tricks mildly interesting. If so, in my research for other bit level tricks I found this really cool resource which is a large compilation of tricks. A lot of interesting stuff on there.

As always if you have any feedback or questions feel free to drop them in the comments below or contact me privately on my contact page. Thanks for reading!

Tags: Optimizations

Comments:

  • V - 2 years, 3 months ago

    Nice..added your link to our resources page!

    reply

  • Cure Panic Attacks fast - 1 month ago

    I tag it to my most love’s web webpage rundown and will be returning soon. Kindly look at my site additionally and let me comprehend what you ponder Panic Away.

    reply

  • 1 Million Facebook Likes - 3 weeks, 2 days ago

    On my first visit i really got surprised while stumbling upon these categories of blog reviews written here, i awaited a lot for this and now finally got the solution here only.

    reply

  • Popcorn Time - 1 day, 10 hours ago

    Just admiring your work and wondering how you managed this blog so well. It’s so remarkable that I can't afford to not go through this valuable information whenever I surf the internet!

    reply

  • see this website - 1 week ago

    Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post with people..

    reply

  • Best Affiliate Program 2015 - 1 month ago

    This really is truly an amazing read for me personally. Much appreciated to you just for distributed content having an exceptional understanding consolidates me to check on all the more frequently for new expound on Google Sniper.

    reply

  • Sleeping Tablets Online - 3 weeks, 5 days ago

    This article gives the light in which we can observe the reality. This is very nice one and gives indepth information. Thanks for this nice article.

    reply

  • Check This site - 2 weeks, 6 days ago

    I have read a few of the articles on your website now, and I really like your style of blogging. I added it to my favorites blog site list and will be checking back soon. Please check out my site as well and let me know what you think.

    reply

  • 100 likes - 2 days, 17 hours ago

    I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business.

    reply

  • Herve - 2 years, 3 months ago

    Cool tricks!

    reply

  • Caverna - 2 years, 3 months ago

    It's great to PIC programming...

    reply

  • D - 2 years, 3 months ago

    Really cool. I've always wondered about bit manipulation but never got around to it. Thanks.

    reply

  • loft conversions london - 3 weeks, 3 days ago

    Great info! I recently came across your blog and have been reading along. I thought I would leave my first comment. I don’t know what to say except that I have.

    reply

  • Check This site - 2 weeks, 6 days ago

    Superbly written article, if only all bloggers offered the same content as you, the internet would be a far better place..

    reply

  • Visit This website - 2 weeks, 6 days ago

    I’ve read some good stuff here. Definitely worth bookmarking for revisiting. I surprise how much effort you put to create such a great informative website.

    reply

  • Check This site - 2 weeks, 6 days ago

    Great article Lot's of information to Read...Great Man Keep Posting and update to People..Thanks

    reply

  • Check This site - 2 weeks, 5 days ago

    I really appreciate the kind of topics you post here. Thanks for sharing us a great information that is actually helpful. Good day!

    reply

  • Check This Out - 6 days, 23 hours ago

    Someone Sometimes with visits your blog regularly and recommended it in my experience to read as well. The way of writing is excellent and also the content is top-notch. Thanks for that insight you provide the readers!

    reply

  • Visit This website - 2 weeks, 6 days ago

    I am very enjoyed for this blog. Its an informative topic. It help me very much to solve some problems. Its opportunity are so fantastic and working style so speedy.

    reply

  • Agentlien - 2 years, 3 months ago

    These tricks are useful to know, but you should clarify that most of these only work for (unsigned) integers. Also, be advised that most of these are done by most compilers implicitly, and explicitly using some of these will only serve to make it more difficult for the compiler to see your intention, and possibly lose optimization opportunities or even lead to pessimization. In particular, this quote is taken from the Wikipedia article on XOR swap: "In most practical scenarios, the trivial swap algorithm using a temporary register is more efficient."

    reply

  • pgrmdave - 2 years, 3 months ago

    Premature optimization and all that. Human readable code is written for humans and compiled for computers - the compiler is likely to take care of these, and if not it's unlikely that dividing by two is the bottleneck in your program.

    reply

  • education news - 3 months, 2 weeks ago

    This article gives the light in which we can observe the reality. This is very nice one and gives indepth information. Thanks for this nice article.

    reply

  • boom beach cheats - 3 months, 2 weeks ago

    I’ve been searching for some decent stuff on the subject and haven't had any luck up until this point, You just got a new biggest fan!..

    reply

  • Estimular al bebé - 4 weeks, 1 day ago

    The website is looking bit flashy and it catches the visitors eyes. Design is pretty simple and a good user friendly interface.

    reply

  • Best University in Vietnam - 3 weeks, 5 days ago

    I really appreciate the kind of topics you post here. Thanks for sharing us a great information that is actually helpful. Good day!

    reply

  • Alfombras - 3 weeks, 4 days ago

    The post is written in very a good manner and it contains many useful information for me.

    reply

  • Visit This website - 2 weeks, 6 days ago

    Hi there! Nice stuff, do keep me posted when you post again something like this!

    reply

  • Official Website - 2 weeks, 5 days ago

    I really loved reading your blog. It was very well authored and easy to undertand. Unlike additional blogs I have read which are really not tht good. I also found your posts very interesting. In fact after reading, I had to go show it to my friend and he ejoyed it as well!

    reply

  • this article - 6 days, 21 hours ago

    All the contents you mentioned in post is too good and can be very useful. I will keep it in mind, thanks for sharing the information keep updating, looking forward for more posts.Thanks

    reply

  • see this website - 6 days, 11 hours ago

    Interesting post. I Have Been wondering about this issue, so thanks for posting. Pretty cool post.It 's really very nice and Useful post.Thanks

    reply

  • mspy coupon code 2015 - 1 month, 1 week ago

    Someone Sometimes with visits your blog regularly and recommended it in my experience to read as well. The way of writing is excellent and also the content is top-notch. Thanks for that insight you provide the readers!

    reply

  • stefan - 2 years, 3 months ago

    I have to agree with the previous poster: many of these tricks will be performed automatically by the compiler, without you having to sacrifice readability and maintainability. Moreover, you may actually decrease performance when applying such tricks, because it's possible you prevent the compiler from applying another optimization within the same context! Leave low level optimizations to the compiler unless: 1. you actually have a performance issue 2. you have found it to be located within that code segment (using a profiler or similar tool) 3. you have verified that the compiled code (i. e. the assembler code) actually does what you think it would (it often does not!)

    reply

  • subway surfers hack - 3 months, 2 weeks ago

    Very good written article. It will be supportive to anyone who utilizes it, including me. Keep doing what you are doing – can’r wait to read more posts.

    reply

  • sports orthotics - 3 months, 1 week ago

    Great job for publishing such a beneficial web site. Your web log isn’t only useful but it is additionally really creative too. There tend to be not many people who can certainly write not so simple posts that artistically. Continue the nice writing

    reply

  • buy likes - 2 months, 4 weeks ago

    This is very educational content and written well for a change. It's nice to see that some people still understand how to write a quality post!

    reply

  • get pinterest followers - 2 months, 4 weeks ago

    You know your projects stand out of the herd. There is something special about them. It seems to me all of them are really brilliant!

    reply

  • Visit This website - 2 weeks, 6 days ago

    Thank you a bunch for sharing this with all of us you actually realize what you are talking about! Bookmarked. Please also seek advice from my site =). We could have a hyperlink change contract between us!

    reply

  • see this website - 6 days, 15 hours ago

    Good website! I truly love how it is easy on my eyes it is. I am wondering how I might be notified whenever a new post has been made. I have subscribed to your RSS which may do the trick? Have a great day!

    reply

  • how to have more followers on instagram - 1 month, 1 week ago

    I read your blog frequently and I just thought I’d say keep up the amazing work!

    reply

  • buy comments on instagram - 1 month, 1 week ago

    Hello There. I found your blog using msn. This is an extremely well written article. I will be sure to bookmark it and return to read more of your useful information. Thanks for the post. I’ll certainly comeback.

    reply

  • snapdeal promo codes - 1 month ago

    I wonder if it would be worth it to systematically use Ctype all the time. Like a new way to program python.

    reply

  • http://neueseoservices.ca/ seo company - 1 month ago

    On my website you'll see similar texts, write what you think.

    reply

  • Denver - 1 month ago

    You have even managed to make it understandable and easy to read. You have some real writing talent. Thank you.

    reply

  • moving companies charlotte nc - 1 month ago

    I came onto your blog while focusing just slightly submits. Nice strategy for next, I will be bookmarking at once seize your complete rises...

    reply

  • buy arabic instagram likes - 1 week, 3 days ago

    I just couldn't leave your website before telling you that I truly enjoyed the top quality info you present to your visitors? Will be back again frequently to check up on new posts.

    reply

  • Get Pregnant fast - 1 month ago

    I believed it was likely to be a few exhausting aged post, however it really made up regarding my period. I will existing a connection about this page upon my internet journal. Almost certainly my visitors will location that significantly suitable regarding Pregnancy miracle.

    reply

  • Buy Google Plus Followers - 1 month ago

    I would like to say that this blog really convinced me to do it! Thanks, very good post.

    reply

  • how to get free gems in clash of clans - 1 month ago

    Awesome and interesting article. Great things you've always shared with us. Thanks. Just continue composing this kind of post.

    reply

  • hay day mod apk - 1 month ago

    Its a great pleasure reading your post.Its full of information I am looking for and I love to post a comment that "The content of your post is awesome" Great work.

    reply

  • Ginefiv - 1 month ago

    This was a really great contest and hopefully I can attend the next one. It was alot of fun and I really enjoyed myself..

    reply

  • Visit This website - 2 weeks, 6 days ago

    hi was just seeing if you minded a comment. i like your website and the thme you picked is super. I will be back.

    reply

  • Loft conversions South London - 4 weeks, 1 day ago

    That is the excellent mindset, nonetheless is just not help to make every sence whatsoever preaching about that mather. Virtually any method many thanks in addition to i had endeavor to promote your own article in to delicius nevertheless it is apparently a dilemma using your information sites can you please recheck the idea. thanks once more.

    reply

  • Refresh Cosmetic & Laser Clinic Brisbane - 4 weeks, 1 day ago

    This is very significant, and yet necessary towards just click this unique backlink:

    reply

  • Mazda dealership las vegas - 4 weeks ago

    Thank you very much for posting and sharing this great article. It is so interesting. I want to know some other information about this site. So please give me this news quickly. I always will be aware of you.

    reply

  • Salesforce Training in Chennai - 4 weeks ago

    Thanks for this article on Bit Level Manipulation. Very informative one.

    reply

  • Wedding Hair Comb New York - 4 weeks ago

    I also wrote an article on a similar subject will find it at write what you think.

    reply

  • internet marketing services - 4 weeks ago

    Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can't wait to read lots of your posts.

    reply

  • electronic gadgets - 3 weeks, 6 days ago

    I like the way in which you have designed your blog. It is very easy to read and see. Will you please update more posts for helping your visitors

    reply

  • Richard A Kimball - 3 weeks, 5 days ago

    Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post .

    reply

  • Richard A Kimball - 3 weeks, 5 days ago

    Awesome and interesting article. Great things you've always shared with us. Thanks. Just continue composing this kind of post.

    reply

  • Best university in Vietnam - 3 weeks, 5 days ago

    I do believe all the concepts you’ve introduced to your post. They’re very convincing and can definitely work.

    reply

  • west palm beach hard drive data recovery - 3 weeks, 5 days ago

    Thank you for this post. Thats all I are able to say. You most absolutely have built this blog website into something speciel. You clearly know what you are working on, youve insured so many corners.thanks

    reply

  • need more money - 3 weeks, 5 days ago

    Really a great addition. I have read this marvelous post. Thanks for sharing information about it. I really like that. Thanks so lot for your convene.

    reply

  • How to Buy Sleeping Tablets Online - 3 weeks, 4 days ago

    It’s better to take proper diet so to add necessary nutritious elements in daily meal. Take proper exercise which is suitable during this stage.

    reply

  • www.uk-courtesans.com - 3 weeks, 4 days ago

    I was looking at some of your posts on this website and I conceive this web site is really instructive! Keep putting up..

    reply

  • 6v battery - 1 week, 2 days ago

    I am very happy to discover your post as it will become on top in my collection of favorite blogs to visit.

    reply

  • Loft conversions Wandsworth - 3 weeks, 2 days ago

    This is highly informatics, crisp and clear. I think that everything has been described in systematic manner so that reader could get maximum information and learn many things.

    reply

  • Caldas da Rainha Villas - 3 weeks, 2 days ago

    Pretty good post. I will use this. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info

    reply

  • CTET Exam Date - 3 weeks, 2 days ago

    I really enjoyed reading this post, big fan. Keep up the good work andplease tell me when can you publish more articles or where can I read more on the subject?

    reply

  • location maison italie - 2 weeks, 6 days ago

    On my first visit i really got surprised while stumbling upon these categories of blog reviews written here, i awaited a lot for this and now finally got the solution here only.

    reply

  • spy mobile - 2 weeks, 5 days ago

    Im no expert, but I believe you just made an excellent point. You certainly fully understand what youre speaking about, and I can truly get behind that.

    reply

  • BellaVei Anti-Aging - 2 weeks, 5 days ago

    Thank you for the information you have provided, I was pleased to read the article in this blog.

    reply

  • el chupete en bebes - 2 weeks, 5 days ago

    I have been checking out a few of your stories and i can state pretty good stuff. I will definitely bookmark your blog

    reply

  • Pittsburgh used cars - 2 weeks, 4 days ago

    I just got to this amazing site not long ago. I was actually captured with the piece of resources you have got here. Big thumbs up for making such wonderful blog page

    reply

  • loft conversions south london - 2 weeks, 4 days ago

    Thanks for the post and great tips..even I also think that hard work is the most important aspect of getting success..

    reply

  • fridge repairs south london - 2 weeks, 3 days ago

    this is really nice to read..informative post is very good to read..thanks a lot!

    reply

  • testerone xl official website - 2 weeks, 2 days ago

    Thanks for this great post, i find it very interesting and very well thought out and put together. I look forward to reading your work in the future.

    reply

  • Taxi to billy bishop airport - 2 weeks, 2 days ago

    I am interested in such topics so I will address page where it is cool described.

    reply

  • waterfront homes Miami - 2 weeks, 2 days ago

    Very nice article, I enjoyed reading your post, very nice share, I want to twit this to my followers. Thanks!.

    reply

  • air conditioning service Albuquerque - 1 week, 5 days ago

    This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free.

    reply

  • my little pony games - 1 week, 5 days ago

    Great! Thanks for sharing the information.

    reply

  • hulk games - 1 week, 5 days ago

    That is very helpful for increasing my knowledge in this field.

    reply

  • pacman games - 1 week, 5 days ago

    Do not know what to say, I liked your article and I hope you will have many entries or more.

    reply

  • happy wheels - 1 week, 5 days ago

    Thank you for the post. I will definitely comeback.

    reply

  • free followers twitter - 2 days, 17 hours ago

    Interesting topic for a blog. I have been searching the Internet for fun and came upon your website. Fabulous post. Thanks a ton for sharing your knowledge! It is great to see that some people still put in an effort into managing their websites. I'll be sure to check back again real soon.

    reply

  • mickey mouse games - 1 week, 5 days ago

    I read your post and I found it amazing! thank!

    reply

  • car games - 1 week, 5 days ago

    Really impressive post. I read it whole and going to share it with my social circules. I enjoyed your article and planning to rewrite it on my own blog.

    reply

  • bike games - 1 week, 5 days ago

    This was among the best posts and episode from your team it let me learn many new things

    reply

  • fun games - 1 week, 5 days ago

    Thanks for the best blog. it was very useful for me.keep sharing such ideas in the future as well.

    reply

  • glass bong for sale - 1 week, 4 days ago

    I really enjoyed reading this post, big fan. Keep up the good work andplease tell me when can you publish more articles or where can I read more on the subject?

    reply

  • Blood Cancer - 1 week, 3 days ago

    Cancer is a disease in which the body cells grow uncontrollably because their normal regulatory mechanisms have been damaged. There are literally hundreds of different types and subtypes of cancer however the majority form solid tumors in specific areas of the body.

    reply

  • Addiction Rehabilitation - 1 week, 3 days ago

    Many people don't know what they will experience when attending an addiction rehabilitation center. Knowing that your addiction will be addressed is one of the most important factors to discovering your ability to overcome your vices.

    reply

  • Business Finance - 1 week, 3 days ago

    IT Business Finance. We're talking about âEUR~information technologyâEUR(TM) financing of course. ThereâEUR(TM)s a lot of concern by Canadian business owners and financial managers

    reply

  • Business Finance - 1 week, 3 days ago

    Many Canadian businesses view their acquisition of technology almost as a battle, and weâEUR(TM)re quite sure they are never really figure out if they are winning or losing!

    reply

  • children health - 1 week, 3 days ago

    Children are more likely to be inducted to various diseases during the growing phase. Confinement within the four walls of a room due to illness more than often hinders their natural growth and development into able-bodied adults.

    reply

  • List Academy Review - 1 week, 2 days ago

    I found your this post while searching for information about blog-related research ... It's a good post .. keep posting and updating information.

    reply

  • auf Rechnung bestellen - 1 week, 2 days ago

    This is a wonderful article, Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck.

    reply

  • click here - 1 week, 2 days ago

    Your blog provided us with valuable information to work with. Each & every tips of your post are awesome. Thanks a lot for sharing. Keep blogging,

    reply

  • StarInfranet Company - 1 week, 2 days ago

    Really impressed! Everything is very open and very clear clarification of issues. It contains truly facts. Your website is very valuable. Thanks for sharing.

    reply

  • auto title loans Los Angeles CA - 1 week, 2 days ago

    I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post.

    reply

  • discount codes for REI - 1 week, 2 days ago

    Great post! I am actually getting ready to across this information, is very helpful my friend. Also great blog here with all of the valuable information you have.

    reply

  • Download Shareit for PC - 1 week, 2 days ago

    Hi! Thanks for the great information you havr provided! You have touched on crucuial points!

    reply

  • Engagement Rings Toronto - 1 week, 1 day ago

    Your music is amazing. You have some very talented artists. I wish you the best of success.

    reply

  • filtered water bottles - 1 week, 1 day ago

    Beaver says I also have such interest, you can read my profile here:

    reply

  • Accident lawyer - 1 week, 1 day ago

    I am happy to find your distinguished way of writing the post. Now you make it easy for me to understand and implement the concept. Thank you for the post.

    reply

  • Xarelto Financial Compensation - 1 week, 1 day ago

    Great article with excellent idea!Thank you for such a valuable article. I really appreciate for this great information..

    reply

  • Movie Tube Now - 1 week ago

    The most interesting text on this interesting topic that can be found on the net ...

    reply

  • yuasa batteries - 1 week ago

    This is a good post. This post gives truly quality information. I’m definitely going to look into it. Really very useful tips are provided here. Thank you so much. Keep up the good works.

    reply

  • green smart living - 6 days, 18 hours ago

    Such intelligent work on the subject and ideal way of writing here. I am really impressed! This post is a helpful overview of the particular topic and very actionable. Interesting approach!

    reply

  • Loft conversions Chiswick - 6 days, 18 hours ago

    Thank you for very usefull information..

    reply

  • Avocado Oil For Skin - 6 days, 17 hours ago

    I admire what you have done here. I like the part where you say you are doing this to give back but I would assume by all the comments that this is working for you as well.

    reply

  • radiant heaters - 6 days, 16 hours ago

    I have recently started a blog, the info you provide on this site has helped me greatly. Thanks  for all of your time & work.  

    reply

  • home remedies for bacterial vaginosis - 4 days, 20 hours ago

    Your work is very good and I appreciate you and hopping for some more informative posts. Thank you for sharing great information to us.

    reply

  • children - 4 days, 14 hours ago

    Such sites are important because they provide a large dose of useful information ...

    reply

  • web designers uk - 4 days, 12 hours ago

    It is quite beneficial, although think about the facts when it reaches this target.

    reply

  • cannabis pipes - 2 days, 18 hours ago

    I really impressed after read this because of some quality work and informative thoughts . I just wanna say thanks for the writer and wish you all the best for coming!.

    reply

  • how to balance your chakras - 2 days, 17 hours ago

    Well done on an amazing post, loved reading every word of it, such information and informative post, will definitely spread this to my friends and family.

    reply

  • the bay cambodia - 2 days, 17 hours ago

    I wonder if it would be worth it to systematically use Ctype all the time. Like a new way to program python.

    reply

  • ggg .com - 2 days, 17 hours ago

    I'm glad to see the great detail here!.

    reply

  • www.ebookreviews.ning.com/pdf/girlfriend-activatio - 2 days, 15 hours ago

    This type of message always inspiring and I prefer to read quality content, so happy to find good place to many here in the post, the writing is just great, thanks for the post.

    reply

  • construction prix st-hubert - 2 days, 15 hours ago

    Nice post. I was checking constantly this blog and I am impressed! Extremely helpful information specially the last part I care for such info a lot. I was seeking this particular information for a very long time. Thank you and good luck.

    reply

  • Dubai media buying agency - 2 days, 14 hours ago

    I recommend only good and reliable information, so see it:

    reply

  • subscribe free - 1 day, 18 hours ago

    Nice post mate, keep up the great work, just shared this with my friendz

    reply

  • youtube bot - 1 day, 18 hours ago

    Thanks so much for sharing this awesome info! I am looking forward to see more postsby you!

    reply

  • Please Visit - 1 day, 16 hours ago

    Hello There. I found your blog using msn. This is an extremely well written article. I will be sure to bookmark it and return to read more of your useful information. Thanks for the post. I’ll certainly comeback.

    reply

  • entretien menager repentigny - 1 day, 2 hours ago

    I got what you mean , thanks for posting .Woh I am happy to find this website through google.

    reply

  • happy diwali 2015 images - 23 hours ago

    I would like to say that this blog really convinced me to do it! Thanks, very good post.

    reply

  • Restaurant for Hen Night - 18 hours ago

    Thanks for another wonderful post. Where else could anybody get that type of info in such an ideal way of writing?

    reply

  • https://propaperwritings.com - 2 hours ago

    Great write-up, I am a big believer in commenting on blogs to inform the blog writers know that they’ve added something worthwhile to the world wide web!..

    reply