计算机进制及转换

计算机使用二进制,另外常用的还有八进制、十进制和十六进制。

进制特点及表示方法

(1)二进制:满2进1,0~1表示,在JDK1.7之前程序中不容许定义二进制数字,从JDK1.7开始可以定义。一般以0b/0B作为开头

(1)八进制:满8进1,0~7表示,一般以0作为开头

(1)十进制:满10进1,0~9表示,如果数字前面没有特殊标识,就是十进制

(1)二进制:满16进1,0~9,a~f表示,一般以0x/0X作为开头

进制转换

(1) 十进制向其他进制的转换:除以对应的进制,余数倒排

(2)其他进制向十进制的转换:从低位开始,按位次乘以进制的位次次幂,然后加起来

二进制和十进制的相互转换

根据上面的进制转换规则,可以演练一下二进制和十进制的相互转换,如将十进制的18转换为2进制。

如图所示,将十进制数字除以对应的要转换的进制2,将余数倒排获取,就得到了十进制18的二进制形式10010。如果要将这个二进制数字反过来再转化为十进制数字,按照从低位开始,按位次取幂再求和,得到1*2^4+1*2^1=18。

二进制和八进制的相互转换

二进制和八进制的转换也有相应规则,二进制转化为八进制,3位变1位,不够的位数高位补0,因此上述的10010补全高位就是010010,转换为八进制就是22。然后八进制转二进制,是按照一变三,即八进制一位变成二进制的三位,这样反过来22变成010010,去掉高位就是10010。

二进制和十六进制相互转换

二进制和十六进制的转换也有相应规则,二进制转化为十六进制,4位变1位,不够的位数高位补0,因此10010补全高位就是00010010,转换为十六进制就是12。然后反过来转换为二进制,是按照一变四,变成00010010,去掉高位就是10010。

小数转换为二进制

小数转换二进制分为两部分,小数的整数部分正常的转换为二进制,小数的小数部分乘以2,取相乘后的数整数部分,然后继续取相乘数小数部分乘以2,取相乘后的数整数部分,如此反复。

如十进制的10.125如果转换为二进制,首先将10转换为二进制就是1010,然后开始循环乘小数部分取整数,如此反复。

step1 0.125*2=0.25,取整数部分 0

step2 0.25*2=0.50,取整数部分 0

step3 0.50*2=1.0,取整数部分1

计算结束,这样10.125如果要用二进制来表示,就是1010.001。这种情况是能比较准确得到二进制数的,如果是其他数字呢?可以看一个普通的小数来转换为二进制,就10.3如何转换为二进制。

step1 0.3*2=0.6 ,取整数部分0

step2 0.6*2=1.2,取整数部分1

step3 0.2*2=0.4,取整数部分0

step4 0.4*2=0.8,取整数部分0

step5 0.8*2=1.6,取整数部分1

step6 0.6*2=1.2,取整数部分1

...

可以发现这个取不尽,最后应该是一个循环二进制的小数形式1010.01001 1001 1001 1001....。

结论:以上是计算机进制和转换相关的知识,只需要遵循一定的套路就可以实现。

原文地址:https://www.cnblogs.com/youngchaolin/p/11267585.html

时间: 2024-08-06 10:26:35

计算机进制及转换的相关文章

java 的任意进制间转换

直接上代码: public class Main { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("十进制转换到其它进制:"); int x = 123 ; String str1 = Integer.toHexString(x) ; ///10进制转换成16进制的字符串 System.out.println(str1); String st

Java转义字符和进制的转换

一:转义字符 \r 表示接受键盘输入,相当于按下回车. \n 表示换行. \t  制表符,相当于Table键 \b 退格键,相当于Back Space \'  单引号 \'' 双引号 \\ 表示一个斜跨 注意:换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符 二:进制的转换 整数常量的表现形式:一进制的形式来表示(二进制,八进制,十进制,十六进制) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为0 ,将余数从下上连接起来就是二进

C#实现整型数据字任意编码任意进制的转换和逆转换

实现如下: using System; using System.Collections.Generic; using System.Linq; using System.Text;  namespace ConsoleApplication1 {      public class Number     {         public string Characters         {             get;             set;         }        

C# 10进制与62进制互转 数据大无压力 10进制与72,96进制任意转换

因项目需要把10进制的ID转换成62进制的字符串,分享给别人. 于是在网上搜索了很多算法,但都未能满足需要,项目里的ID是固定算法算出来的18~20位数据的ulong整型. 如:17223472272256398107,509488277152981097. 网上找的算法问题在于,将ulong的值转换62进制的字符串后,再将字符串转换成ulong值时会不准确. 于是各种测试与假象问题所在,最后确定算法确实没有问题,于是开始怀疑数据类型的问题. 果然,原因是使用了Math.Pow(double x

64进制编码转换

由于项目需要把一个ID(数字)压缩成尽可能短字符串,在网上找来好久没有找到合适, 自己动手写一个. 有需要的可以参考一下,也作为自己的一些积累吧! 代码如下: Java代码   /** * 64进制和10进制的转换类 * @author Administrator * */ public class compressEncodeing { final static char[] digits = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , 

javascript 10进制和64进制的转换

原文:javascript 10进制和64进制的转换 function string10to64(number) { var chars = '0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ-~'.split(''), radix = chars.length, qutient = +number, arr = []; do { mod = qutient % radix; qutient = (qutient - m

iOS 将16进制字符串转换成UIColor

#pragma mark - 将16进制字符串转换成 UIColor - (UIColor *)generateColorObjectWithHex:(NSString *)hexString { unsigned int red = 0, green = 0, blue = 0; NSRange range = {0, 2}; range.location = 0; NSString *redString = [hexString substringWithRange:range]; NSSc

Python的进制等转换

To 十进制 二进制: >>> int('110', 2) -> 6 八进制: >>> int('10', 8) -> 8 十六进制: >>> int('10', 16) -> 16 >>> int('1A', 16) -> 26 To 十六进制: 十进制: >>> hex(12) -> ‘0xc’ 二进制: >>> hex(0b100) -> ‘0x4’ 八进制

将16进制字符串转换成16进制数据

var tb1 = Tb1.Text; if (string.IsNullOrEmpty(tb1)) { tb1 = "0000"; } var s1 = tb1.Substring(0, 2); var int_1 = Convert.ToInt32(s1, 16); var s2 = tb1.Substring(2, 2); var int_2 = Convert.ToInt32(s2, 16); var bt1 = Convert.ToByte(int_1); var bt2 =