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 关注 私信
相关文章推荐
- JAVA运算符
- Java基本语法--数据类型、运算符表达式、基本控制语句、数组使用以及练习
- Java语言一元运算符实例解析
- Java基础03-函数与运算符
- Java语法基础之运算符学习笔记分享
- 面试题-java基本数据类型和运算符
- JAVA入门教程运算符和表达式
- Java入门-第二节(数据类型和运算符)
- C++程序员学Java系列之六:运算符
- Java基础学习笔记 -- 5(运算符)
- JAVA中三元运算符的使用
- JAVA基础之运算符
- java中的运算符
- Java中二元运算符被简化后带来的变化
- java中的条件运算符
- java学习第2天_eclipse,键盘录入,运算符
- java入门之数据类型与运算符
- java学习——Java中的运算符
- Java 运算符优先级
- java中8种基本数据类型、基本数据类型的转换与运算符