不通过sizeof如何获得int 的字节数呢?
可以利用 左移运算符 <<
这里解释一下左移:就是在二进制的基础上对数字进行平移。左移一次,低位补零,高位舍弃。 比如二进制数 00000001(也就是十进制的1),左移一次变成了00000010(也就是十进制的2) ,同时也就是说,每左移一次,数的值相当于乘以2,当然也就极限。00000001左移8次之后,就变成了00000000。
同时还有右移运算符>>
右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。
#include <iostream>
using namespace std;
int main()
{
int i = 1;
while(i)
i = i <<1;//一个循环,每次左移一位
cout << i/8 << endl;//因为一个字节8位
return 0;
}