您的位置:首页 > 编程语言 > Java开发

Java 运算符

2020-05-05 12:13 666 查看

android studio跑的程序。

基础知识
byte 1字节 8位
short 2字节 16位
int 4字节 32位
long 8字节 64位
float 4字节 32位
double 8字节 64位
char 2字节 16位(java采用unicode)

位运算符:按位与(&);按位或(|);异或(^);取反(~),左移(<<) ;右移(>>);无符号右移(>>>)。
位运算符是二进制操作。在操作位移符号(<<、>>、>>>)时,char、byte、short类型会自动提升为int类型。

代码

int x = 2;
Log.d(TAG, "x : " + Integer.toBinaryString(x));
Log.d(TAG, "~x: " + Integer.toBinaryString(~x));
int y = 1;
Log.d(TAG, "onCreate: " + Integer.toBinaryString(x & y)); //1&1=1 0&1=0 0&0=0  10&01=00(位和位与)
Log.d(TAG, "onCreate: " + Integer.toBinaryString(x | y)); //1&1=1 0&1=1 0&0=0  10|01=11(位和位或)
Log.d(TAG, "onCreate: " + Integer.toBinaryString(x ^ y)); //相同输出0 不同输出1 (位和位异或)

int i = -1;
Log.d(TAG, "onCreate: " + Integer.toBinaryString(i));
//负数在计算机中的存储形式是其同值正数的补码
//int 正1的原码是000000000000000000000001
//int 正1的反码是(原码各位取反)11111111111111111111111111111110
//int 正1的补码是(反码末位加1)11111111111111111111111111111111

i = -2;
Log.d(TAG, "i = -2 : " + Integer.toBinaryString(i));
i = -3;
Log.d(TAG, "i = -3 : " + Integer.toBinaryString(i));
i = -4;
Log.d(TAG, "i = -4 : " + Integer.toBinaryString(i));

int i = 5;
Log.d(TAG, "i : " + Integer.toBinaryString(i));
Log.d(TAG, "i<<2: " + Integer.toBinaryString(i << 2));
//i=5 i为int  00000000 00000000 00000000 00000101
//向左移动两位 空位补0  00000000 00000000 00000000 00010100
Log.d(TAG, "i>>2: " + Integer.toBinaryString(i >> 2));
//向右移动两位 i为正数 空位补0  00000000 00000000 00000000 00000001
i = -5;
Log.d(TAG, "i=-5: " + Integer.toBinaryString(i));
Log.d(TAG, "i=-5  i>>2: " + Integer.toBinaryString(i >> 2));
//向右移动两位 i为负数 空位补1  11111111 11111111 11111111 11111110
Log.d(TAG, "i=-5 i>>>2: " + Integer.toBinaryString(i >>> 2));
//无符号右移两位 不管正负  空位补0  00111111 11111111 11111111 11111110

byte b = -1;
Log.d(TAG, "onCreate: " + Integer.toBinaryString(b));
b >>>= 10;
//byte为8位,这里用的Integer提升为32位(这里和位移符号的默认提升为int是两码事)
//也就是11111111111111111111111111111111
//无符号右移10 为 00000000001111111111111111111111
//计算玩完赋值给byte b, byte 为八位 取后八位 首位是1 所以还为-1
Log.d(TAG, "onCreate: " + Integer.toBinaryString(b));

int i = 5;
Log.d(TAG, "i = -1 : " + Integer.toBinaryString(i<<34));
//Think in Java 中有提到int类型只有右侧的5个低位有用(因为2的5次幂也就是32),这右侧的五个低位指的是34的五个低位,
//34的二进制是00100010,也就是00010有用,00010的十进制为2所以移动两位。

long l=5;
Log.d(TAG, "i = -1 : " + Integer.toBinaryString(i<<67));
//long为低6位。

Li_Jiandan 原创文章 4获赞 0访问量 234 关注 私信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: