Java 菜鸟入门

2023-10-27

前言

所谓进制转换,就是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”和“位权”所构成。其中基数是指进位计数制中所采用的数码的个数,逢 n 进 1 中的 n 就是基数。而位权则指的是进位制中每一个固定位置所对应的单位制,而每一种进制中的某一个数的每位上都有一个权值 m,而且权值是位数减一,比如个位上的数的权值为 0(位数 1 - 1 = 0),而十位的权值为 1(位数 2 - 1 = 1)。

在 Java 学习中,我们难免会和各种进制打交道。今天就来看看,在 Java 中最常用的几个进制的相关概念,以及如何利用 Java 来实现他们之间的相互转换!

二进制

二进制是计算机中采用最广泛的一种数制,用 0 和 1 两个数码来表示,其进位规则是逢二进一,而借位规则则是借一当二。

如果要将二进制转换为十进制,则采用 按权展开求和方法,其步骤是先将二进制的数写成加权系数展开式,然后再更具十进制的加法规则进行求和。

( 1011 ) 2 = 1 ∗ 2 3 + 0 ∗ 2 2 + 1 ∗ 2 1 + 1 ∗ 2 0 = ( 11 ) 10 (1011)_2=1*2^3+0*2^2+1*2^1+1*2^0 = (11)_{10} (1011)2=123+022+121+120=(11)10

十进制

而一个十进制数要转换为二进制数,则需要将整数和小数部分分别转换,最后再进行组合。其中,整数部分采用除二取余,逆序排序的方法。具体方法是用 2 来整除一个十进制数,从而得到一个商和余数;然后再用 2 去除以商,从而又得到一个商和余数,重复这个步骤,直到最后得到的商小于 1 时为止。最后把按照得到余数的先后顺序,逆序依次排列,得到的数即为这个十进制数的二进制表示。

( 15 ) 10 = ( 1111 ) 2 (15)_{10}=(1111)_2 (15)10=(1111)2

整数部分

小数部分则不同于整数部分,小数部分要使用乘 2 取整法,即用十进制的小数部分乘以 2,然后取结果的整数部分,然后再用剩下的小数重复刚才的步骤,直到最后剩余的小数为 0 时停止。最后将每次得到的整数部分按照先后顺序正序排列,从而得到对应的二进制表示。

( 0.25 ) 10 = ( 0.01 ) 2 (0.25)_{10}=(0.01)_2 (0.25)10=(0.01)2

八进制

所谓八进制,就是每 3 位二进制作为一个单元,其中最小的数是 0,最大的数是 7,一共 8 个数字。

要将二进制的数转换为八进制,需要将 3 个连续的数拼成一组,然后再独立转成八进制中的数字。

例如,二进制的 111101011110 111101011110 111101011110 可以转换为八进制中的 7536 7536 7536

十六进制

所谓十六进制,就是每 4 位二进制作为一个单元,其中最小数是 0,最大数是 15,一共 16 个数字,分别用 0 ~ 9、A、B、C、D、E、F 表示。

要将二进制转换为十六进制,需要将 4 个连续的数拼成一组,然后再独立转换为十六进制中对应的数字。

例如,二进制的 1111100111010111 1111100111010111 1111100111010111 可以转换为十六进制中的 F 9 D 7 F9D7 F9D7

常用进制转换

当然,Java 中也已经将常用的进制转换方法封装好了,我们只需要调用对应方法即可。

转换 方法 返回
十进制 -> 二进制 Integer.toBinary(int num) 二进制字符串
十进制 -> 八进制 Integer.toOctalString(int num) 八进制字符串
十进制 -> 十六进制 Integer.toHexString(int num) 十六进制字符串
十进制 -> N 进制 Integer.toString(int num, int N) N 进制字符串
public class Main {
	public static void main(String[] args) {
		int num = 200;
        System.out.println(num + " 的二进制是:" + Integer.toBinaryString(num));
        System.out.println(num + " 的八进制是:" + Integer.toOctalString(num));
        System.out.println(num + " 的十六进制是:" + Integer.toHexString(num));
        System.out.println(num + " 的三进制是:" + Integer.toString(num, 3));
	}
}

相反的,如果我们要将一个 N 进制的字符串 str 转换为十进制数,那么可以使用以下方法。

转换 方法 返回
N 进制 -> 十进制 Integer.parseInt(String str, int N) 十进制数
public class Main {
	public static void main(String[] args) {
		String str = "21104";
        int N = 5;
        System.out.println(str + " 的十进制是:" + Integer.parseInt(str, N));
 	}
}

总结

以上就是有关二进制、十进制、八进制、十六进制相关的知识点了。此外还介绍了 Java 中如何进行十进制向其他进制的转换方法,以及如何将其他进制转换为十进制。如果你刚好这些内容对你有所帮助,那就来个一键三连吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 菜鸟入门 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其

随机推荐

  • 计算机专业知识要点,计算机专业基础知识要点及习题

    计算机专业基础知识要点及习题 第一章概论 数据就是指能够被计算机识别 存储和加工处理的信息的载体 数据元素是数据的基本单位 可以由若干个数据项组成 数据项是具有独立含义的最小标识单位 数据结构的定义 逻辑结构 从逻辑结构上描述数据 独立于计
  • CCF 2019年9月第一题--小明种苹果(java)

    此代码为提交满分代码 如有什么不好之处 欢迎留言 必认真研讨 试题编号 201909 1 试题名称 小明种苹果 时间限制 2 0s 内存限制 512 0MB 问题描述 package com hsx ccf import java util
  • .NET Framework各版本比较

    摘自CSDN 导读 一直以来 众多学校教学以及公司开发环境所使用Visual Studio NET Framework版本多不相同 本文作者比较了 NET Framework多个版本之间的区别 方便各位选择和切换 NET Framework
  • centos end trace

    每个人遇到的问题可能不一样吧 我也不是专业的运维 我只能说我自己的解决方法 错误 重启的时候出现的 百度 Google后感觉问题大概出现在内核版本上面在https www linuxquestions org questions slack
  • 写出一个抽奖页面,有200个人参加抽奖

    写出一个抽奖页面 有200个人参加抽奖 每次抽出一个人 不能重复 必须每个人都要抽中奖 前面10次抽奖要选中固定的10个人 每次就从这10人中随机抽取一人 不能重复 从第11次开始就从剩余的190人当中抽奖 不能重复 直到抽奖结束 已经中过
  • Java实现输出 1000 - 2000 之间所有的闰年

    我之前写过一篇文章 输出1 100之内的素数 其实是差不多的 可以参考一下 https blog csdn net question mark article details 100627185 关于闰年我们知道 有三种情况 分别是普通闰年
  • 软件测试/测试开发丨学习笔记之接口自动化测试

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接 https ceshiren com t topic 25120 一 接口自动化测试框架介绍 1 接口测试场景 2 自动化测试场景 3 接口自动化测试与 Web App 自动化测试区别
  • pands 表头字段自适应

    fields Unnamed 0 Unnamed 1 合计 人民币元 美元 合计 1 美元 1 沙特里亚尔 合计 2 人民币元 1 美元 2 沙特里亚尔 1 合计 3 美元 3 沙特里亚尔 2 cleaned sentence a 0 wh
  • 大模型时代,如何评估人工智能与人类智能?

    省时查报告 专业 及时 全面的行研报告库 省时查方案 专业 及时 全面的营销策划方案库 免费下载 2023年8月份全网热门报告合集 ChatGPT提词示例 让你的ChatGPT聪明100倍 超百页干货资料 AI应用的难点 痛点与未来 202
  • 软件测试最新项目合集【商城、外卖、银行、金融等等.......】

    项目一 ShopNC商城 项目概况 ShopNC商城是一个电子商务B2C电商平台系统 功能强大 安全便捷 适合企业及个人快速构建个性化网上商城 包含PC IOS客户端 Adroid客户端 微商城 系统PC 后台是基于ThinkPHP MVC
  • 同一个网站可以放2个服务器吗,两个网站放在同一个服务器 备案

    两个网站放在同一个服务器 备案 内容精选 换一换 介绍常见的安全组配置示例 如下示例中 出方向默认全通 仅介绍入方向规则配置方法 允许外部访问指定端口不同安全组内的弹性云服务器内网互通仅允许特定IP地址远程连接弹性云服务器SSH远程连接Li
  • python语法(高阶)-多线程编程

    演示多线程编程的使用 import time import threading def sing msg while True print msg time sleep 1 return None def dance msg while T
  • vue2+koa2+mongodb分页

    后端 const Koa require koa2 const Router require koa router const Monk require monk 链接mongodb数据库中间件 const app new Koa cons
  • 导入数据库

    导入数据库 数据库表 打开SQL Server数据库 选择数据库单击右键新建一个数据库表
  • Selenium爬虫实战丨Python爬虫实战系列(8)

    个人主页 互联网阿星 格言 选择有时候会大于努力 但你不努力就没得选 作者简介 大家好我是互联网阿星 和我一起合理使用Python 努力做时间的主人 如果觉得博主的文章还不错的话 请点赞 收藏 留言 支持一下博主哦 行业资料 PPT模板 简
  • 每天进步一点点-WPF-根据数据类型加载控件

    目的 根据数据类型的不同 动态的加载适用于不同数据类型的控件 布局 原理 为自定义的数据类型添加数据魔板 绑定的时候绑定这些数据类型的实例 例子 数据类型 数据模板
  • 达尔文商品管理

    什么是达尔文 达尔文是一套全新的商品管理体系 它不同于淘宝原来的分类法 基于类目属性体系 的管理思路 而是以最细粒度的产品节点 CSPU 为核心 使用系统 运营机制的方式维护一套丰富 准确的产品库 通过产品实现聚合 管控商品 以确保商品信息
  • Spring中typeAliasesPackage的作用

    typeAliasesPackage 是自动配置别名 也就是设置这个之后 在Mybatis的Mapper文件里就可以写对应的类名 而不用写全路径名了 例如 typeAliasesPackage xyz hashdog modules bea
  • UE4物体随着样条线(Spline)运动

    1 样条线原理 1 1 贝塞尔曲线 一定要经过起止点 若干个控制点用于控制曲线弯曲的方向 最终形成一条光滑的曲线 由于贝塞尔曲线点太多了不好控制 一般每四个点做一次贝塞尔曲线 得到的若干段相邻贝塞尔曲线的连接点需要共线且距离相同 即为C1连
  • Java 菜鸟入门

    前言 所谓进制转换 就是人们利用符号来计数的方法 进制转换由一组数码符号和两个基本因素 基数 和 位权 所构成 其中基数是指进位计数制中所采用的数码的个数 逢 n 进 1 中的 n 就是基数 而位权则指的是进位制中每一个固定位置所对应的单位