我正在学习位打包和位缓冲器,我遇到了这行代码
int NumBits = sizeof(float) << 3
现在输出是正确的,浮点数是4个字节,当您将其转换为位时,它是32位,这是NumBits
的值
我的问题是,位向左移位3是如何得到正确的值的?
他们也可以用相反的方式,将实际的NumBits
向右移动3
int numbytes = NumBits >> 3;
我正在学习位打包和位缓冲器,我遇到了这行代码
int NumBits = sizeof(float) << 3
现在输出是正确的,浮点数是4个字节,当您将其转换为位时,它是32位,这是NumBits
的值
我的问题是,位向左移位3是如何得到正确的值的?
他们也可以用相反的方式,将实际的NumBits
向右移动3
int numbytes = NumBits >> 3;
Sizeof(浮点数)返回浮点数的大小,单位为字节.在大多数系统(例如PC)中,浮点数是4个字节,因此sizeof(浮点数)等于4.
<;<;运算符是左移位运算符.当您将一个值左移一定位数时,您可以有效地将该值乘以2,并将其乘以移位位数的幂.在本例中,您左移了3位,因此相当于乘以2^3,即8.
因此,sizeof(Float)<;<;3等于4<;<;3,等于32.
总而言之,向左移位3与乘以8相同,后者给出了位数.同样,向右移位3与除以8相同.