c++ 向上取整为8的倍数,或者2^x的倍数
生活随笔
收集整理的這篇文章主要介紹了
c++ 向上取整为8的倍数,或者2^x的倍数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 int round_up(int x){
2 return (((x) + 8 - 1) & ~(8 - 1));//向上取整為2^x的倍數(shù)需要將本行的兩個(gè)8改為2^x
3 }
cout<<round_up(17)<<endl; //24
cout<<round_up(123)<<endl; //128
解釋:
[x,x + 8 - 1]范圍內(nèi)會(huì)包括將x向上取整的結(jié)果,比如x=7,則[7,14]中包含取整結(jié)果8。
~是按位取反操作,~(8-1)將8的二進(jìn)制表示從00001000變?yōu)?span style="color:#ff0000;">11111000,即把1前面的位都變?yōu)?。
x+8-1 和 ~(8-1)做按位與&操作,則得到結(jié)果。
轉(zhuǎn)載于:https://www.cnblogs.com/SneakyCrab/p/6101093.html
總結(jié)
以上是生活随笔為你收集整理的c++ 向上取整为8的倍数,或者2^x的倍数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Kafka集群搭建及SASL/SCRAM
- 下一篇: 文秘专业计算机基础考题,2017年大学计