爱上进制转换练习

引言

对于可能接触到通讯行业或是物联网的开发工作者,一般会面对十进制、二进制、十六进制的转换工作,不仅仅是体现在代码上,有时候也需要用肉眼来进行快速的转化,以获取协议指令中的信息。

今天通过简单的整理,特此将这三种转化整理成一张表,并配上三个单独的执行程序。作为日后记忆的参考;而三个可执行程序是为了每天进行练习。

进制对照表

其中红色框代表比较有特点的二进制,绿色框代表十六进制和十进制完全相同的数。

练习程序

二进制识读练习

代码中,使用一个随机数,随机产生0-15之间任意的数,并格式化为4比特位的二进制,两秒输出一个,十个一换行,无限循环。大家可以根据控制台输出的二进制数快速的在心中说出对应的十六进制或者十进制的数字,这样长期练习应该可以把三种进制之间的转化玩的很溜。

/*** 死循环输出0-15之间任意的数字,然后显示二进制,在脑海中回想对应的16或10进制。* * @author mht* @date 2018年10月30日上午10:28:25*/
public class 二进制练习 {public static final String[] ZEROS = { "", "0", "00", "000" };public static void main(String[] args) throws InterruptedException {Random rdm = new Random();int lineCount = 0;for (;;) {int out = rdm.nextInt(16);TimeUnit.SECONDS.sleep(2);if (lineCount == 10) {System.out.println();lineCount = 0;}System.out.print(format4Bits(out));lineCount++;}}private static String format4Bits(Integer unformatNum) {if (unformatNum == null)throw new InvalidParameterException("参数异常!");String binaryString = Integer.toBinaryString(unformatNum);int diff = 4 - binaryString.length();return ZEROS[diff] + binaryString + "	";}}

 十六进制识读练习

和二进制识读练习类似,控制台会随机输出一个0-15之间的任意数,转化为十六进制输出,我们需要在心中快速念出对应的二进制和十进制的数字。勤加练习,相信应该可以找到一定的技巧。

/*** 死循环输出0-15之间任意的数字,然后显示十六进制,在脑海中回想对应的2或10进制。* @author mht* @date 2018年10月30日上午10:29:52*/
public class 十六进制练习 {public static void main(String[] args) throws InterruptedException {Random rdm = new Random();int count = 0;for (;;) {int out = rdm.nextInt(16);TimeUnit.SECONDS.sleep(2);if (count == 10) {System.out.println();count = 0;}System.out.print(Integer.toHexString(out).toUpperCase() + "    ");count++;}}
}

十进制识读练习 

/*** 死循环输出0-15之间任意的数字,然后显示,在脑海中回想对应的16或2进制。* @author mht* @date 2018年10月30日上午10:29:35*/
public class 十进制练习 {public static void main(String[] args) throws InterruptedException {Random rdm = new Random();int count = 0;for (;;) {int out = rdm.nextInt(16);TimeUnit.SECONDS.sleep(2);if (count == 10) {System.out.println();count = 0;}System.out.print(out + "	");count++;}}
}

学习感想

此练习最好每天坚持5到10分钟,坚持一周到两周,效果应该会体现出来。

随着对进制的理解,我们应该逐渐地不再惧怕进制的转化和运算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sprint Boot————@Qualifier、@Primary

引言 使用Autowired自动注入时: 如果注入的接口有多个实现类,如下所示: 那么如果不指定具体是哪个实现类的Bean,在Spring Boot启动时就会发生异常(下图请点击查看): 异常的描述信息非常简单&am…

SpringMVC教程上篇

SpringMVC教程上篇 SpringMVC优势: SpringMVC代码执行流程: 框架结构: 架构流程: 组件说明: SpringMVC与Mybatis整合 ! 效果: 开发流程:

Eclipse使用————生成Get/Set、toString快捷键(不使用鼠标)

引言 除了鼠标右键空白处—>source选择我们需要的操作之外是否还有更快捷的不需要鼠标的操作呢? 如何快速的通过键盘来生成get、set方法?如何快速的通过键盘生成toString方法?如何快速的通过键盘生成需要实现的父类方法呢? …

SpringMVC教程下篇

SpringMVC教程下篇 内容包括: 绑定数组: 将表单数据绑定到list: RequestMapping注解的三种用法: Controller方法返回值: 乱码问题总结 异常处理: 照片上传: RESTFUL支持&#xff…

Spring Boot面试杀手锏————自动配置原理

引言 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。 当然,作为Spring Boot的精髓…

为什么要坚持写博客

引言 断断续续地写博客已经有一段时间了,作为一个Java中级开发工程师,工作了三年多也算渐渐入了门。不得不说,博客给我的改变是非常大的,那么作为一个技术人员,为什么我觉得必须要坚持写博客?下面&#xf…

Spring Boot——@ConfigurationProperties与@Value的区别

引言 Spring Boot从配置文件中取值的方式有两种,一种是批量注入ConfigurationProperties,另一种是单独注入Value。 它们之间除了批量与单独取值的区别之外,还存在着其他一些使用方式,本篇博客将详细讲解这两种注解之间的区别和使…

Spring Boot —— YAML配置文件

引言 首先,YAML并不是仅仅可以使用在Java项目中,它是一种类似于json结构的标记语言,可以为所有的编程语言服务。它强调更直观的层级表示,比较适合描述配置文件中的层级关系。 Spring Boot可以识别后缀名为".properties&quo…

centos7下docker启动失败解决

centos7下docker启动失败解决 docker安装成功却启动失败,查看docker服务,systemctl status docker.service, 服务日志提示Failed to start Docker Application Container Engine.如下图所示: 解决方法,修改docker文件&#xff0…

Java并发编程实战————Semaphore信号量的使用浅析

引言 本篇博客讲解《Java并发编程实战》中的同步工具类:信号量 的使用和理解。 从概念、含义入手,突出重点,配以代码实例及讲解,并以生活中的案例做类比加强记忆。 什么是信号量 Java中的同步工具类信号量即计数信号量&#x…

JavaCard概述

什么是JavaCard JavaCard,即Java智能卡。以智能卡硬件系统为基础,通过软件的方式构造一个支持Java程序下载、安装、运行的软/硬件系统。由于引入了虚拟机技术,JavaCard具备硬件无关性,即智能卡应用程序开发与智能卡硬件系统相分离…

LeetCode算法入门- Add Two Numbers-day3

LeetCode算法入门- Add Two Numbers-day3 Add Two Numbers You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return …

Java核心篇之多线程---day1

Java面试之多线程—day1 一. 线程中sleep方法与wait方法有什么区别? 对于 sleep()方法,我们首先要知道该方法是属于 Thread 类中的。而 wait()方法,则是属于Object 类中的。 在调用 sleep()方法的过程中, 线程不会释放对象锁。而…

Java 多线程 —— 常用并发容器

引言 本博客基于常用的并发容器,简单概括其基本特性和简单使用,并不涉及较深层次的原理分析和全面的场景用法。 适合对不了解并发容器的同学,工作中遇到类似的场景,能够对文中提到的并发容器留有简单印象就好。 一、Concurrent…

Tomcat运行三种模式:http-bio|http-nio|http-apr介绍

转自《tomcat运行三种模式:http-bio|http-nio|http-apr介绍》 Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一。不过,许多开发人员不知道的是,Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式&#…

LeetCode算法入门- Reverse Integer-day6

LeetCode算法入门- Reverse Integer-day6 Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321 Example 3: Input: 120 Output: 21 class Solution {public int reverse(int x) {long…

Java工具方法——属性拷贝方法:BeanUtils.copyProperties(Object, Object)

介绍 org.springframework.beans.BeanUtils.copyProperties(Object, Object)是spring 框架的对象工具类:BeanUtils下的一个拷贝对象属性的方法。 官方注释 把给定的源对象属性值拷贝到目标对象中。 注意:源对象类与目标对象类不一定非要完全匹配&…

Git初学札记(九)————EGit检出远程分支

引言 现在有这样一个使用场景:团队中的其他开发者提交了一个新的特性分支(如feature_1),要求我们一同开发,并将自己修改的代码也全部提交到这个分支上去。那么如何将这个分支检出,并将本地检出的分支与这个…

Spring Boot————ApplicationListener实现逃课事件监听

引言 上一篇文章转了一篇关于ApplicationListener用于在Web项目启动时做一些初始化的用法。 但是,在实际生产过程中,当一个事件产生,又是如何被onApplicationEvent()方法监听到,并执行一系列动作呢?简单搜索了一下&a…

Java核心篇之Redis--day4

Java核心篇之Redis–day4 Redis有哪些数据结构? 字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。 1.String:字符串,常用命令:get,set,decr,incr,mget(查…