java中的二进制
(1)按位与运算 &
1 & 1 = 1, 0 & 1 = 0
51 & 5 即 0011 0011 & 0000 0101 =0000 0001 = 1;
(2)按位或运算 |
(3)异或运算 ^
1 ^ 1 = 0,1 ^ 0 = 1 ,0^ 0 = 0(两个位的值不同,则结果为1,相同结果为0)
51 ^ 5 即 0011 0011 ^0000 0101 =0011 0110=54;
(4)<<左移运算符
1.将一个运算对象的各二进制位全部左移若干位(左边的二进制丢弃,右边补0)
(注意:java中 整数位 32位)
11 << 2 = 44
-14 <<2 =-56
-14的二进制(11111111 11111111 11111111 11110010)左移2位
为 11111111 11111111 11111111 11001000
结果为(-56)(后面讲述负数在二进制中如何表示的)
(5)>>右移运算符
将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1.
4 >> 2 = 1;
-14 >> 2 = -4;
(6)~按位取反
~6 = -7
(7)>>>无符号右移运算符
二进制各个位向右移指定的位数,右移后左边空出来的位用零来填充,移出右边的位被丢弃。
-14 >>> 2 =11111111 11111111 11111111 11110010 => 00111111 11111111 11111111 11111100 =1073741820
(8)<<<无符号左移运算符
二进制各个位向左移指定的位数,左移后右边空出来的位用零来填充,移出左边的位被丢弃。
3 <<< 1 = 6
(9)二进制中负数的计算
负数以正数的补码表示
原码:一个整数按照绝对值的大小转化成二进制的数
反码:将二进制数按位取反
补码:反码加 1
以-14 举例
原码:14 即 00000000 00000000 00000000 00001110
反码: 11111111 11111111 11111111 11110001
补码: 11111111 11111111 11111111 11110010
所以-14 的二进制是 11111111 11111111 11111111 11110010
假设 我们得到 二进制让我们求整数 就是倒着来取相反数
如二进制是 11111111 11111111 11111111 11110010
得到反码减1 11111111 11111111 11111111 11110001
原码: 00000000 00000000 00000000 00001110
即 1110 = 14 所以取反 就是-14
- public static void main(String[] args) {
- /*
- * 十进制转化为其他进制
- */
- //二进制
- System.out.println(Integer.toBinaryString(0));
- //16进制
- System.out.println(Integer.toHexString(112));
- //8进制
- System.out.println(Integer.toOctalString(112));
- /*
- * 其他进制转化为是十进制
- */
- //二进制
- System.out.println(Integer.parseInt("1110000", 2));
- //8进制
- System.out.println(Integer.parseInt("71", 8));
- //16进制
- System.out.println(Integer.parseInt("A1", 16));
- }
- public class phone {
- /*
- * 转化int 为byte数组
- */
- 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);
- for (int i = 0; i < arr.length; i++) {
- arr[i] = (byte)((int)(id >> i*8)& 0xff);
- }
- return arr;
- }
- /*
- * 转化byte数组为 int
- */
- 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);
- int result =0;
- for (int i = 0; i < arr.length; i++) {
- result += (int)((arr[i]& 0xff) <<i*8);
- }
- return result;
- }
- public static void main(String[] args) {
- byte[] arr = phone.int2Bytes(8143);
- System.out.println(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]);
- System.out.println(phone.bytes2Int(arr));
- //字符串与字符数组
- String info="好好学习,天天向上";
- byte[] barr = info.getBytes();
- String des = new String(barr);
- System.out.println(des);
- }
- }
如有不对,请指正!
java中的二进制的更多相关文章
- Java中的二进制及基本的位运算
Java中的二进制及基本的位运算 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借位规则是"借一当二 ...
- 在Java中关于二进制、八进制、十六进制的辨析
八进制数中不可能出7以上的阿拉伯数字.但如果这个数是123.是567,或12345670,那么它是八进制数还是10进制数?单从数字的角度来讲都有可能! 八进制 所以在Java中规定,一个数如果要指明它 ...
- Java中处理二进制移位
我相信,这篇文章读起来会相当有趣. 文章中编程语言是Java,用Java的原因:第一,Java不做数据溢出校验,这样我们可以忽略溢出异常:第二,Java普及率比较高,就像是python或shell,几 ...
- java中表示二进制、八进制、十进制、十六进制,double、float、整型
java里不能这样表示二进制,只能是 8,10,16进制 8: 前置 0 10: 不需前置 16: 前置 0x 或者 0X double:2 ...
- java中表示二进制、八进制、十进制、十六进制
1.进制 进制是一种记数方式 ,可以用有限的数字符号代表所有的数值.由特定的数值组成. 2.进制的表现形式 二进制: 由0和1两个数字组成. 八进制: 由0-7数字组成,为了区分与其他进制的数字区别, ...
- java中关于二进制的初步。
两个int型和一个long型的转换: long now=1368257088802L; int low = (int) (0xFFFFFFFFL & now) ...
- java中使用二进制进行权限控制
基本概念 package test; publicclass Rights { publicstaticvoid main(String[] args) { int a=1; // 001 状态a i ...
- Java中转换为二进制的几种实现
public class HexUtil { private static final String[] DIGITS_UPPER = {"0", "1", & ...
- java中的进制转换方法
java中进行二进制,八进制,十六进制,十进制间进行相互转换 关键字: java 进制转换 十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer ...
随机推荐
- compass模块----Utilities----Sprites精灵图合图
css雪碧图又叫css精灵或css sprite,是一种背景图片的拼合技术.使用css雪碧图,能够减少页面的请求数.降低图片占用的字节,以此来达到提升页面访问速度的目的.但是它也有令人诟病的地方,就是 ...
- 分布式Session共享(二):tomcat+memcached实现session共享
一.前言 本文主要测试memcached实现session共享的实现方式,不讨论如何让nginx参与实现负载均衡等. 二.环境配置 本测试在Window下进行 name version port To ...
- 清空文本框SetDlgItemText(IDC_TXTXT,NULL);
清空文本框 SetDlgItemText(IDC_TXTXT,NULL);
- ubuntu中安装openssh-server失败(首先ubuntu不能远程root登录)
ubuntu 安装openssh-server时,报依赖错误 解决方法: 更新软件 sudo apt-get update 如果报校验和不符错误:(此错误为部分网址被墙)如图 解决方法如下 ...
- J2EE 基础知识积累
1. 面向对象的思维: 1. 有哪些类 那些对象 2. 这些类中,每种类应该具有某种属性和方法 3. 考虑类与类之间应该具有什么样的关系 3. 1. 成员变量可以使用java语言中 ...
- HTML5 video 事件
1.获取视频时间长度 当视频载入video后,使用 onloadedmetadata 事件获取视频的时间长度. video.onloadedmetadata = function () { var v ...
- iframe的操作
获取iframe的window,获取Iframe的document,获取父页面的window,某个环境是否iframe,动态创建iframe 这是demo.html,这个页用iframe嵌入了ifra ...
- JS判断访问设备、客户端操作系统类型
先给出一个实例:判断windows.linux.android 复制以下代码另存为html文件即可. <html> <head> <title>判断操作系统< ...
- 滑雪(POJ 1088 记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 88094 Accepted: 33034 Description ...
- a标签# 和javascript:;的区别
最近遇到一个问题,解决了记录下来. <body style="height:10000px;"> <span style="top:3000px;pos ...