java中的二进制基础(慕课笔记)
来源:互联网 发布:excel数据有效性序列 编辑:程序博客网 时间:2024/05/22 03:16
生活中常见的进制 十进制、十二进制、十六进制、二十进制、六十进制、三百六进制
计算机 ---二进制----萊布尼兹---伏羲
二,进制的相关概念
十进制 7 = 二进制 0111-----0*2^(3)+1*2^(2)+1*2^(1)+1*2^(0);
二进制
计算机内部用二进制:运算简单,简化了计算机结构
八进制
适用用12位和36位计算机操作系统 标志的开头用0表示,用0-7的数字表示
十六进制
用0-9,A,B,C,D,E,F表示
表示表达长度短,变得更常用,标志的开头用0X表示
三,进制的探索
二进制的位运算
直接对二进制的位直接进行操作
优点
特定情况下,计算方便,速度快,被支持面广
如果用算术方法 速度慢 逻辑复杂
1.按位与 &
两位全为1 结果才为1
0&0=0 0&1=0 1&1=1
特殊用法
(1)清零。与一个各个位全为0的数值相与,结果为0
(2)取一个数中指定位。
设X=1010 1110 取X的低四位 ,X&0000 1111即可得到
2.按位或|
有1为 1
常用来对一个数据的某些位 置1
3.与或运算
相同为0 相反为1
异或运算的特殊用途
(1)使特定位翻转 找到一个数 对应X要翻转的各位 该数对应位为为1,其余位为0 ,此数与X对应位异或即可。
例:X=1010 1110 使低四位翻转 ,用X^0000 1111=1010 0001
(2) 与0异或,保留原值
(3)两个变量值交换
1,借助第三个变量来实现
C=A;A=B,B=C
2.利用加减法实现两个变量的交换
A=A+B;B=A-B;A=A-B;
3.用异或运算来实现 ,也是效率最高
原理:利用一个数异或本身为0和异或运算符合交换律
A=A^B;B=A^B;A=A^B;
4.取反运算~
对一个二进制数按位取反
~1=0 ~0=1
5.左移运算<<
将一个运算对象的各个二进制全部左移若干位(左移的二进制丢弃,右边补零)
2<<1=4
若左移是舍弃的高位不包含1,则左移一位,相当于乘以2
6.右移运算 >>
将一个数的各个二进制全部右移若干位 ,正数补0 ,负数补1,右边丢弃。操作数每右移一位,相当于该除以2
左补0 or 补 1 得看被移数是正还是负
例 1:1=4>>2; 0100>>2 =0001
7.无符号右移运算>>>
各个位向右移 指定的位数 。右移后左边空出来的位用零来填充,移除的右边位被丢弃
负数以其正值的补码形式表示
原码
一个数按照绝对值大小转换成的二进制数为原码
例如 00000000 00000000 00000000 00001110是14的原码
反码
将二进制数按位取反,所得的新二进制数称为二进制的反码
例如 00000000 00000000 00000000 00001110 按位取反
11111111 11111111 11111111 11110001 它们互为反码
补码
反码加1称为补码
11111111 11111111 11111111 11110001+1=11111111 11111111 11111111 11110010
-14(11111111 11111111 11111111 11110010)
四,JAVA内置的进制转换
五,java中的数据类型
二进制 在跨平台中用得比较多 如:文件读写,数据通信
java 语言中基本数据类型
int 类型
byte 1个字节 8位 short 2个字节 16位
int 4个字节 32位 11(1011)<<=44 11(0000 0000 0000 0000 0000 0000 0000 1011)32bit
long 8个字节 64位
浮点型数据类型
单精度(32bit 4个字节 float)、双精度(64bit doble)
bolean类型的取值类型 true 、false
char 数据类型 Unicode 字符 16bit
对应得类类型
Integer、Float、Boolean、Character、Double、Short、Byte、Long
数据类型 转化 字节
例 8143(00000000 00000000 00011111 11001111)
=> byte[] b=[-49,31,0,0];
第一个(低端) 字节 8143>>0*8 &oxff=(11001111)=207 (或者有符号 -49);
第二个(低端) 字节 8143>>1*8 &oxff=(00011111)=31 ;
第三个(低端) 字节 8143>>2*8 &oxff=(00000000)=0 ;
第四个(低端) 字节 8143>>3*8 &oxff=(11001111)=0 ;
大小端
小端法(little-Endian)
低位字节排放在内存的低 地址端 即该地址值的起始地址,高位字节排放在内存的高地址端
大端法(Big-Endian)
高位字节排放在内存的低 地址端 即该地址值的起始地址,低位字节排放在内存的高地址端
例 :32bit宽的数 0x12 34 56 78
在 little-Endian 模式的CPU内存中的存放方式
参考文章
位运算的威力
http://blog.scdn.net/iukey/article/details/7195265
大小端详解
http://blog.scdn.net/zhaoshuzhaoshu/article/details/37600857
- java中的二进制基础(慕课笔记)
- Java中的二进制基础
- java学习笔记--二进制基础
- Java基础:二进制转换
- 二进制基础-java
- JAVA二进制基础
- java二进制相关基础
- 二进制基础,JAVA应用
- 《JAVA中的二进制》
- java中的二进制
- java中的二进制
- Java学习之二进制基础
- Java基础数据类型二进制转换
- 黑马程序员—Java基础学习笔记之(环境变量配置&负数二进制&位移运算)
- 黑马程序员 JAVA基础--关键字,标识符,运算符,二进制的转换的学习笔记
- 笔记一下二进制在程序中的应用
- Java基础笔记 – Java中的Exception异常 自定义异常
- Java基础笔记 – Java中的Exception异常 自定义异常
- 软件测试黑马工程师---接口测试
- 最长递增子序列详解
- Java学习笔记—手写简单的ORM框架
- mybatis笔记
- java printf的格式化输出
- java中的二进制基础(慕课笔记)
- $.ajax()方法详解
- 【安卓学习笔记】( 不定期更新)
- AngularJS $http post 传递参数数据
- 《图解HTTP[上野宣]》读书笔记六-3
- java基础第十七天 io缓冲流
- Spring-jdbc
- 煤矿井下精确人员定位系统—通过Vue.js构造数据缓存区
- jQuery获取文本节点之 text()/val()/html() 方法区别