在书上的第681页上有一个公式:RowLength=4*((bmch.bcWidth*bmch.bcBitcount+31)/32),这个公式里面为什么要加上31?
为什么这个公式等效于RowLength=((bmch.bcWidth*bmch.bcBitCount+31)&31)>>3?

解决方案 »

  1.   

    是书上的一个计算DIB像素占用空间的公式
      

  2.   

    31用二进制表示为11111五个1,bmch.bcWidth*bmch.bcBitCount+31)&31相当于取bmch.bcWidth*bmch.bcBitCount+31的二进制的最后五位,>>3是左移三位,右边以0代替,如11111>>3等于00011==3,
    把两个公式都转换成二进制与的方式就会发现是一样的了。
      

  3.   

    RowLength=4*((bmch.bcWidth*bmch.bcBitcount+31)/32),这个公式里面为什么要加上31?向上取整!
      

  4.   

    Windows程序设计真的那么好吗?