文件操作---二进制
来源:互联网 发布:js 歌手 编辑:程序博客网 时间:2024/06/07 02:11
1.二进制基础
二进制来源
中国----《周易》—八卦图
西方人发明的计算机—>西方人发明的二进制
西方人莱布尼茨发明的二进制,来源于一个中国朋友给他的一封信,信里有一张八卦图
2.二进制转换
57:
111001-------2^(6-1)+2^(5-1)+2^(4-1)+2(1-1)=32+16+8+1=57
十进制转换二进制: 采用短除2,倒排列余数;
8进制,适合12位和363位计算机系统,开头用0表示
16进制,开头用0X表示
3.位运算
在特定情况下,计算方便,速度快,被支持面广
如果采用算数方法,速度过慢
(1)按位与&
0&0=0; 0&1=0; 1&0=0; 1&1=1;
作用用法
清零:想要将一串数字上的一段单元变为0,则将其与一个相应位置上都是0的数做与运算即可;
取一个数的指定位置上的数值,
则将其与一个对应位置上都是1的数做与运算即可;
(2)按位或 |
只要有一个为1,结果就是1
0|0=0; 0|1=1;
特殊用法:
常用来对一个数据的某些位置1
方法:和相应位是1的数做|运算
(3) 异或运算^
不同为1,相同为0;
特殊用途:
使特定位数上的数值翻转:
方法:与一个对应位为1,其余位是0的数值做异或运算,即可得到一般翻转的数值。
与0异或,保留原值,
两个变量交换值的方法:
借助第三变量来实现
利用加减法实现两个变量的交换
用异或运算来实现,也是效率最高的方法、
原理:利用一个数异或本身等于0和疑惑运算符合交换律
A=A^B; B=A^B; A=A^B;
(4)取反运算~
1~=0;0~=1;
(5)左移运算<<
把一个对象的各个二进制位全部左移若干位,(左边的二进制丢弃,右边的补0)
2<<1=4;
若左移时舍弃的高位不包含1,则每次左移一位相当于该数乘以2
11(1011)<<2=44;
(6) 右移运算>>
向右移动时候,正数左边补充0,负数左边补充1;右边丢弃;操作数每次向右移动一位,相当于该数除以2;
(7)无符号>>
右移指定位数,左边突出的用0来补充,移动出来的右边的位被丢弃;
负数用其正值的补码形式表示
原码:正数转化为二进制数
反码:原码按位取反
补码:反码+1;
-14(11111111 11111111 11111111 11110010)<<2
=(11111111 11111111 11111111 11001000)
=
(求补码的原码对应的正值,然后取相反数)
JDK内置转换
十进制->其他进制
System.out.println(Integer.toBinaryString(112));//二进制
System.out.println(Integer.toHexString(112));//十六进制
System.out.println(Integer.toOctalString(112));//八进制
其他进制->十进制
System.out.println(Integer.parseInt(“111001”,2)); //二进制
System.out.println(Integer.parseInt(“27”,8)); //十六进制
System.out.println(Integer.parseInt(“A8”,16)); //八进制
如果码数写错,会抛出异常
Java中的数据类型
Java处理高层
跨平台中,用进制,文件读写、数据通信
int类型:byte(8bit)/int(32bit)/long(64bit)
float类型
boolean(1bit)
char(16bit)
数据类型转化为字节
大小端
小端法:低位字节放在内存的低地址端,即该值的起始地址,高位字节排放在内存的高地址端;
大端法:高位字节排放在内存的低地址端,即该值的起始地址,低位字节排放在内存的高地址端;
import java.util.*;public class Main{ public static void main(String[] args) { //byte[] arr=Convert.int2Bytes(8143); //System.out.println(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]); String describe="我是菜鸟"; byte[] barr=describe.getBytes(); System.out.println(barr); String des=new String(barr); System.out.println(des); } public static byte[] int2Bytes(int id) { byte[] arr=new byte[4]; arr[0]=(byte)((int)((id>>0*8)&0xff)); arr[1]=(byte)((int)((id>>1*8)&0xff)); arr[2]=(byte)((int)((id>>2*8)&0xff)); arr[3]=(byte)((int)((id>>3*8)&0xff)); return arr; } public static int bytes2Int(byte[] arr) { int rs0=(int)((arr[0]&0xff)<<0*8); int rs1=(int)((arr[1]&0xff)<<1*8); int rs2=(int)((arr[2]&0xff)<<2*8); int rs3=(int)((arr[3]&0xff)<<3*8); return rs0+rs1+rs2+rs3; }}
- C 文件操作 二进制
- 文件操作---二进制
- java操作文件 文件----二进制----字符串---二进制---文件
- 文件流和二进制流操作
- html5之文件和二进制的操作
- 文件读写操作之一 <二进制读写操作> fwrite与fread
- 二进制操作
- VB中关于文件及二进制操作的经验
- c++ 文件操作二进制模式的读写问题
- JavaScript文件操作(5)-Blob类型(二进制大对象)
- .net 文件上传至数据库二进制字段 及读取操作。
- mysql 二进制日志文件恢复操作及日志分类
- Window文件及注册表操作之二进制文…
- HTML5新特性之文件和二进制数据的操作
- 操作二进制数据
- 二进制格式文件流操作
- 二进制的一些操作
- C++常用二进制操作
- 读《世界梦幻图书馆》(日)
- 挖财面试总结
- figure和mark元素
- spring
- android5.1+获取当前运行的app
- 文件操作---二进制
- 中缀表达式转换为前缀后缀最简单的方法
- 写给新人的面向对象的基本思维
- Managing Bitmap Memory
- 接口定义步骤
- Android PCM音频的采集和编码成AAC
- dubobo接口的泛化调用(不依赖jar包)
- JDBC快速入门教程
- Android Studio系列教程二--基本设置与运行