java 中的进制转换
- 二进制: 0-1,满2进1,在java中 0b 或者 0B 开头来表示
- 八进制: 0-7,满8进1,在java中 以 0 开头来表示
- 十进制: 0-9,满10进1,日常使用的数字就是十进制
- 十六进制: 0-9 和 A(10)-F(15) ,满16进1,以0x 或者 0X来开头表示
进制对照表
二进制 | 八进制 | 十进制 | 十六进制 |
---|---|---|---|
1 | 1 | 1 | 1 |
10 | 2 | 2 | 2 |
11 | 3 | 3 | 3 |
100 | 4 | 4 | 4 |
101 | 5 | 5 | 5 |
110 | 6 | 6 | 6 |
111 | 7 | 7 | 7 |
1000 | 10 | 8 | 8 |
1001 | 11 | 9 | 9 |
1010 | 12 | 10 | A |
1011 | 13 | 11 | B |
1100 | 14 | 12 | C |
1101 | 15 | 13 | D |
1110 | 16 | 14 | E |
1111 | 17 | 15 | F |
二进制转十进制
规则: 从最低位(右面)开始,每个位上的数 * (2 的(位数下标(从0开始))的次方)结果求和得到的数字就是十进制
例: 0b1011转换十进制, 1011; 1*(2的0次方) + 1 *(2的1次方)+ 0*(2的2次方)+ 1*(2的3次方)= 11;八转十进制
从最低位(右面)开始,每个位上的数 * (8 的(位数下标(从0开始))的次方)结果求和得到的数字就是十进制
十六进制转十进制
从最低位(右面)开始,每个位上的数 * (16 的(位数下标(从0开始))的次方)结果求和得到的数字就是十进制
十进制转二进制
规则: 将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
例: 将66 转换成2进制
十进制转八进制
规则: 将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制
例: 将567 转换成八进制
十进制转十六进制
规则: 将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制
例: 9876 转换成 16 进制
二进制转八进制
规则: 从低位开始,将二进制数每三位一组,转成对应八进制数即可
例: 101110 转换成八进制
二进制转十六进制
规则: 从低位开始,将二进制数每四位一组,转成对应的十六进制数即可,
例: 10111001 转换成十六进制
八进制转二进制
规则: 将八进制数每一位,转成对应的一个三位的二进制数即可
十六进制转二进制
规则: 将十六进制每一位,转成对应的一个四位的二进制数即可
原码、反码、补码
1. 二进制的最高位就是符号位,0表示正数,1表示负数
2. 正数的原码、反码、补码都是一样 (三码合一)
3. 负数的反码 = 它的原码符号位不变,其它位取反( 0->1,1->0)
4. 负数的补码 = 它的反码+1, 负数的反码 = 负数的补码 - 1
5. 0 的反码、补码都是 0
6. java中的数都是有符号的,java中没有无符号之说
7. 在计算机运算的时候,都是以补码的方式来运算的
8. 当我们看到运算结果的时候,要看它的原码
java 中的7个位运算符
1. 按位与 & : 两位全为1,结果为1,否则0
2. 按位或 | : 两位有一个为1,结果为1,否则为0
3. 按位异或 ^ : 两位一个为0,一个为1,结果为1,否则为0
4. 按位取反 ~: 0->1,1->0
5. >> 算术右移: 低位溢出,符号位不变,并用符号位补溢出位
6. << 算术左移: 符号位不变,低位补零
7. >>> 逻辑右移也叫无符号右移,运算规则: 低位溢出,高位补0
/*** 原码、反码、补码* 1. 二进制的最高位就是符号位,0表示正数,1表示负数* 2. 正数的原码、反码、补码都是一样 (三码合一)* 3. 负数的反码 = 它的原码符号位不变,其它位取反( 0->1,1->0)* 4. 负数的补码 = 它的反码+1, 负数的反码 = 负数的补码 - 1* 5. 0 的反码、补码都是 0* 6. java中的数都是有符号的,java中没有无符号之说* 7. 在计算机运算的时候,都是以补码的方式来运算的* 8. 当我们看到运算结果的时候,要看它的原码*/public static void main(String[] args) {/*** 按位与 & : 两位全为1,结果为1,否则0* 2 和 3 都是正数, 正数三码合一* 2的补码 00000000 00000000 00000000 00000010* 3的补码 00000000 00000000 00000000 00000011* 按位与后 00000000 00000000 00000000 00000010 转换成 10进制 为 2*/System.out.println(2 & 3); // = 2/*** 按位取反 ~: 0->1,1->0* -2的原码(负数符号位为1) 10000000 00000000 00000000 00000010* -2反码 (原码符号位不变其它位取反) 11111111 11111111 11111111 11111101* -2的补码 (补码 = 反码 +1) 11111111 11111111 11111111 11111110* 按位取反 00000000 00000000 00000000 00000001 符号位为0 得到的结果是正数 正数是三码合一, 转换为 10进制 = 1**/System.out.println(~-2); // = 1/*** 按位取反 ~: 0->1,1->0* 2的原码 (正数三码合一 原码、反码、补码都是一样) 00000000 00000000 00000000 00000010* 按位取反 11111111 11111111 11111111 11111101 符号位为1 此数为负数,* 反码 (反码 = 补码 - 1) 11111111 11111111 11111111 11111100* 原码 10000000 00000000 00000000 00000011 转换为十进制 = -3*/System.out.println(~2); // = -3/*** 按位或 | : 两位有一个为1,结果为1,否则为0* 2 的原码 00000000 00000000 00000000 00000010* 3 的原码 00000000 00000000 00000000 00000011* 00000000 00000000 00000000 00000011 转换为十进制 = 3*/System.out.println(2 | 3); // = 3/*** 按位异或 ^ : 两位一个为0,一个为1,结果为1,否则为0* 2 的原码 00000000 00000000 00000000 00000010* 3 的原码 00000000 00000000 00000000 00000011* 00000000 00000000 00000000 00000001 转换为十进制 = 1*/System.out.println(2 ^ 3); // = 1/*** 算术右移: 低位溢出,符号位不变,并用符号位补溢出位* 正数运算 132 / 2 / 2 / 2 = 16*/System.out.println(132 >> 3); // = 16/*** 算术右移: 低位溢出,符号位不变,并用符号位补溢出位** -1的原码(负数符号位为1) 10000000 00000000 00000000 00000001* -1反码 (原码符号位不变其它位取反) 11111111 11111111 11111111 11111110* -1的补码 (补码 = 反码 +1) 11111111 11111111 11111111 11111111* 右移两位后 11111111 11111111 11111111 11111111* 反码 11111111 11111111 11111111 11111110* 原码 10000000 00000000 00000000 00000001 转换十进制 = -1*/System.out.println(-1 >> 2); // = -1/*** << 算术左移: 符号位不变,低位补零* 3 * 2 * 2 = 12*/System.out.println(3 << 2); // = 12/*** >>> 逻辑右移也叫无符号右移,运算规则: 低位溢出,高位补0*/System.out.println(5 >>> 2); // = 1}
java 中的进制转换相关推荐
- java中的进制转换
进制转换 首先是十进制转化为其他进制,如二进制,八进制,十六进制: 它们在java中都有专门的函数可供调用: 如:十进制转化为二进制时调用toBinaryString(); 十进制转化为八进制时调用t ...
- java中的进制转换(十进制和二进制)
在java中有进制转换,其中有十进制,二进制,八进制,十六进制,这里主要讲的是其中的十进制和二进制. 当我们一个数要变成二进制的时候可以对它进行除二运算.就比如6的二进制.如图 ...
- java中各个进制转换
转自:http://aijava.cn/2359.html 众所周知.程序世界计算机中采用的是二进制,一个数字可以用任意进制表示.所以看一个数据值的同时.还要观察它的进制.以免造成笑话. 此时.进制之 ...
- 小技巧 ----- Java中的进制转换
自带的API Integer.parseInt(数, 数对应的进制)/Integer.valueOf(数, 数对应的进制) ----- 将不同进制数转为十进制数 Integer.toString(十进 ...
- java中的进制输出转换_Java I/O : Java中的进制详解
作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...
- java中各进制之间的转换(十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制)...
在java编辑中有没有遇到经常需要进行java中各进制之间的转换(十进制转十六进制.十进制转二进制.二进制转十进制.二进制转十六进制)的事情呢?下面我们就来分析一下各自是怎么转换的: [java] / ...
- java中的进制输出转换_java中进制的转换,Byte与16进制的转换
java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下: 首先关于最简单的二进制转换的方法有: 十 ...
- html进制转换js代码,JS中的进制转换以及作用
js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: 运行下面代码 //10进制转为16进制 (10).toString(16) ...
- python二进制反码例题_python中的进制转换和原码,反码,补码
python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...
最新文章
- 当面试官问这些基础的Python问题时,竟然还有80%的人不会!
- 《评人工智能如何走向新阶段》后记(深谈人工智能发展前沿)
- 关于加载 下拉 刷新,和加载更多,
- 互联网的尽头是乡村振兴
- 《犯罪心理学》读书笔记(part5)--犯罪心理的形成与内在因素的影响(下)
- 蒙古族女孩鲍尔金娜的小说《紫茗红菱》
- 源码 连接mysql_MySql轻松入门系列————第一站 从源码角度轻松认识mysql整体框架图...
- Redis集群添加节点
- Oracle如何根据SQL_TEXT生成SQL_ID
- 【SpringBoot_ANNOTATIONS】自动装配 02 @Resource @Inject
- 最新版本启动HBuilderX.exe时,被联想mcafee杀毒软件删除的解决方法
- 手机 省份证 归属地查询接口
- 计算机主机电源连接,七个步骤教你主机电源如何接线
- Zookeeper选举机制
- Visio方向键无法移动对象的解决办法[笔记本版]
- 工程部署: 低算力平台模型性能的优化
- Linux 基础总结,这一篇就够了!
- python 简单的颜色序列生成器
- torch.squeeze和torch.unsqueeze
- Unity下利用 timeScale和 unscaledDeltaTime实现部分静帧
热门文章
- 运维企业专题(10)RHCS集群工具——FENCE搭建、高可用服务配置详解
- python自动退出程序_python异常退出
- java矩阵传递给r_从JAVA调用R得到卡方统计和p值
- php函数默认参数不传值报错,php 关于函数参数的默认值
- Vue教程5【vuex】getters,mapState,mapGetters,mapActions,mapMutations,模块化namespace
- python3的各个版本有什么区别_python不同版本的_new_不同点总结
- 学JS的心路历程 -物件与原型(二)
- bzoj 1731 [Usaco2005 dec]Layout 排队布局——差分约束
- 函数指针--全局函数指针与类的函数指针(二)
- 阿里云E-HPC联合安世亚太、联科集团共建云超算生态