java学习笔记--二进制基础
2017-05-05 19:34
218 查看
1、二进制位运算
&:与运算6&3=2
|:或运算6|3=7
^:异或运算6^3=5
~:反码~6=-7
<<:左移3*2=6
“>>”:右移3/2=1
“>>>”:无符号右移3/2=1
2、二进制计算的优点
特定情况下,计算方便,速度快 ,被支持的面广
采用算数方法,速度慢,逻辑复杂
3、位运算的使用
&:清零、取特定的位
|:置一
^:是特定位反转(特定位与1异或)、与0相异或保留原值
交换两个变量的值:
(1)借助中间变量
(2)利用加减法实现
A=A+B;B=A-B;A=A-B
(3)用位异或实现,效率最高
原理:利用一个数异或本身等于0,和异或运算符合交换率
如:A=A^B;B=A^B;A=A^B
4、java内置的进制转换
十进制转化成其他进制:
Integer.toBinaryString(112);//2进制
Integer.toHexString(112);//16进制
Integer.toOctalString(112);//8进制
其他进制转换成十进制:
Integer.parseInt(“121001”,2);//2进制
Integer.parseInt(“27”,8);//16进制
Integer.parseInt(“A8”,16);//8进制
5、字节序列和字符串的转换的编码问题
一个项目可以设置编码方式
&:与运算6&3=2
|:或运算6|3=7
^:异或运算6^3=5
~:反码~6=-7
<<:左移3*2=6
“>>”:右移3/2=1
“>>>”:无符号右移3/2=1
2、二进制计算的优点
特定情况下,计算方便,速度快 ,被支持的面广
采用算数方法,速度慢,逻辑复杂
3、位运算的使用
&:清零、取特定的位
|:置一
^:是特定位反转(特定位与1异或)、与0相异或保留原值
交换两个变量的值:
(1)借助中间变量
(2)利用加减法实现
A=A+B;B=A-B;A=A-B
(3)用位异或实现,效率最高
原理:利用一个数异或本身等于0,和异或运算符合交换率
如:A=A^B;B=A^B;A=A^B
4、java内置的进制转换
十进制转化成其他进制:
Integer.toBinaryString(112);//2进制
Integer.toHexString(112);//16进制
Integer.toOctalString(112);//8进制
其他进制转换成十进制:
Integer.parseInt(“121001”,2);//2进制
Integer.parseInt(“27”,8);//16进制
Integer.parseInt(“A8”,16);//8进制
5、字节序列和字符串的转换的编码问题
package com.imooc.file; import java.io.UnsupportedEncodingException; public class EncodeDemo { public static void main(String[] args) throws UnsupportedEncodingException { String s = "慕课ABC"; byte[] bytes1 = s.getBytes();//转换成字节序列用的是默认的 编码gbk for (byte b : bytes1) { //把字节(转换成了int)以十六进制的形式显示 System.out.print(Integer.toHexString(b&0xff)+" "); } //gbk编码 System.out.println(); byte[] byte2 = s.getBytes("gbk"); //gbk编码中文占用两个字节,英文占用一个字节 for (byte b : byte2) { System.out.print(Integer.toHexString(b&0xff)+" "); } //utf-8编码 System.out.println(); byte[] byte3 = s.getBytes("utf-8" 4000 ); //utf-8中中文占三个字节,英文占一个字节 for (byte b : byte3) { System.out.print(Integer.toHexString(b&0xff)+" "); } //java是双字节编码,utf-16be System.out.println(); byte[] byte4 = s.getBytes("utf-16be"); //utf-16be中文占两个字节,英文占两个字节 for (byte b : byte4) { System.out.print(Integer.toHexString(b&0xff)+" "); } /** *当你的字节序列是某种编码时,当将字节序列编程字符串时, *也需要使用这种编码否则会出现乱码 */ System.out.println(); String str1 = new String(byte4);//用项目默认编码 System.out.println(str1); //使用utf-16be编码 System.out.println(); String str2 = new String(byte4,"utf-16be"); System.out.println(str2); /** * 文本文件 就是字节序列 * 可以是任意编码的字节序列 * 如果我们在中文机器上直接创建文本文件 ,那么该文本文件只认识ansi编码方式 * 联通、联(utf-8)的txt是乱码,联想txt不是乱码(ansi)这是一种巧合 */ } }
一个项目可以设置编码方式
相关文章推荐
- 黑马程序员 JAVA基础--关键字,标识符,运算符,二进制的转换的学习笔记
- Java2核心技术第七版的学习笔记(三) Fundamental Programming Structures in Java(Java语言的基础)(三)
- 整理JAVA学习笔记 JAVA基础需要掌握重点
- [转]CoreJava学习笔记_Java语法基础
- java学习笔记-jsp基础1
- Java基础学习笔记
- 传智播客_张孝祥_Java基础4_面向对象下_学习笔记
- Java2核心技术第七版的学习笔记(三) Fundamental Programming Structures in Java(Java语言的基础)(四):
- JAVA学习笔记(基础知识)
- 做java程序员有一段时间了,但是感觉基础的东西了解的很少很少,我从现在开始从新开始。。。。。。。。。。。学习笔记(连载)给有需要的人
- java学习笔记-java基础1
- Java 基础学习笔记(持续更新中)
- java学习笔记二-基础学习
- 分布计算环境学习笔记5——Java Enterprise Edtion基础
- Java2核心技术第七版的学习笔记(三) Fundamental Programming Structures in Java(Java语言的基础)(一)
- java基础学习笔记原始类型变量赋值与非原始变量赋值
- Java学习笔记(一、Java语言基础)
- Java学习笔记(三、面向对象编程基础)
- 传智播客_张孝祥_Java基础3_面向对象上_学习笔记
- 传智博客学习笔记4--JAVA编程基础1