int类型如何按位操作
按位分配的int,也分有符号和无符号两种,
int类型按位操作如下:
typedef xp
{
int a:2;
unsigned int b:2;
}MyXp;
MyXp x;
x.a = 3;
x.b = 3;
这样,输出的x.a为-1,x.b为3。
同时,大家看到,这种分配方法是定义在struct中的。如果你在代码中直接定义:int a:2;编译时会导致错误,无法识别“:”。
这是因为int是内建类型,它不能被改变内存分配的方式。所以单独的int,不能直接被声明为只占2位。
java的移位运算是整个数整体向左或者右移动。如果是向左移,则是低位补0。如果是向右移,分两种情况。如果是0和正数,则高位补0。如果是负数,则高位补1。还有一种按位运算,符号位也是要参与的。
int在java内部是用32位来表示的,而最高位是表示符号,所以真正可以表示数字的是31位。java的int类型取值范围是-2^31~2^31-1。