计算机各进制之间的转换

今天翻了一本计算机基础的书籍,其中十进制、二进制、八进制、十六进制之间的转换挺有意思的,也容易犯糊涂,特温故而知新。

十进制数制系统

十进制数制系统包括 10 个数字:0、1、2、3、4、5、6、7、8、9

基为:10        逢十进一,如3+7=10,20+80=100

二进制数制系统

计算机中使用二进制表示数据

二进制包括两个符号:0和1

二进制逢二进一:(1+1)2=(10)2

二进制的基为2

示例:1000101100101101

八进制数制系统

用于缩短二进制的数字长度

八进制基是8,使用的符号为:0、1、2、3、4、5、6、7

逢八进一,即(7+1)8=(10)8

十六进制数制系统

十六进制数制系统的基是 16

十进制:0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15

十六进制:0、1、2、3、4、5、6、7、8、9、A、 B、 C、D、 E、 F

逢十六进一,如 (8+8)16=(10)16

示例:12B、00FFFF

计算机中以数量表示色彩

各数制的权

各种数制中不同位的权为“基的n-1次方(n为所在的位数)”。

          如:

十进制中,各位的权为10n-1

二进制中,各位的权为2n-1

八进制中,各位的权为8n-1

十六进制中,各位的权为16n-1

数制转换

其他进制向十进制转换

十进制向其他进制转换

二进制、八进制、十六进制之间进行转化

非十进制转成十进制

方法:将相应进制的数按权展成多项式,按十进制求和。

(F8C.B)16

= F×162+8×161+C×160+B×16-1

= 3840+128+12+0.6875

=3980.6875

(10011.01)2

=1×24+0×23+0×22+1×21+1×20+0×2-1+1×2-2

=16+2+1+0.25

=19.25

整数部分的转换

除基取余法:用目标数制的基数去除十进制数,第一次相除所得余数为目的数的最低位 K0,将所得商再除以基数,反复执行上述过程,直到商为“0”,所得余数为目的数的最高位。

例:(81)10=(?)2

得:(81)10 =(1010001)2

 

小数部分的转换

乘基取整法:小数乘以目标数制的基数,第一次相乘结果的整数部分为目的数的最高位,将其小数部分再乘基数依次记下整数部分,反复进行下去,直到小数部分为“0”,或满足要求的精度为止。(如2-5,只要求到小数点后第五位)

例: (0.65)10 =( ? )2 要求精度为小数五位。

由此得:(0.65)10=(0.10100)2

综合得:(81.65)10=(1010001.10100)2

二进制与八进制间的转换

从小数点开始,将二进制数的整数和小数部分每三位分为一组,不足三位的分别在整数的最高位前和小数的最低位后加“0”补足,然后每组用等值的八进制码替代,即得目的数。

例:(11010111.0100111)2 = (327.234)8

二进制与十六进制间的转换

从小数点开始,将二进制数的整数和小数部分每四位分为一组,不足四位的分别在整数的最高位前和小数的最低位后加“0”补足,然后每组用等值的十六进制码替代,即得目的数。

例: (111011.10101)2=(3B.A8)16

综合示例:

将 -617 用八进制和十六进制(补码)表示:

答案: (-617)10=(176627)8=(fd97)16

原理:任何数在内存中都是以二进制补码的形式存放的.

正数的补码就是其本身的二进制.

负数的补码是其绝对值的二进制的反码加+1.

1:-617的绝对值:617

其二进制0000001001101001(整型16位)

2: 反码  :1111 1101 1001 0110.

3:加1后 :1111 1101 1001 0111.

转8进制,3位一体:

即:001 111 110 110 010 111

1   7   6   6   2   7

转16进制,4位一体:

即:1111 1101 1001 0111

F    D    9    7

时间: 2024-12-10 19:23:57

计算机各进制之间的转换的相关文章

Python3进制之间的转换

Python3进制之间的转换 在Python里面实现进制之间的转换是非常方便的,有专门的函数来进行这个操作: 下面直接上代码: # 进制之间的转换 a = 10 # 转换为二进制 print(bin(a)) # 结果为0b1010 # 转换为八进制 print(oct(a)) # 结果为0o12 # 转换为八进制 print(hex(a)) # 结果为0xa # 一个非十进制的数转换为十进制 print(int(0b1010)) # 结果为10 原文地址:https://www.cnblogs.

(2、8、10、16)进制之间的转换的背后的故事

今天在涉及到String型转换为Int型时候想到的一个问题,带符号数的转换问题,发现需要再回头看看进制的问题.找到点资料,觉得还可以,借取一段放在这里与备后查. 16进制:用16作为基数的计数系统.用数字0-9和字母a-f(或其大写A-F)表示10到15. 十六进制数转换成十进制数 2进制,用两个阿拉伯数字:0.1: 8进制,用八个阿拉伯数字:0.1.2.3.4.5.6.7: 10进制,用十个阿拉伯数字:0到9: 16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?

C语言博客(6)编程基础之进制之间的转换

在本人的C语言博客的内容中,前面两篇随笔对二进制.八进制和十六进制进行了说明,接下来讲一下不同进制之间的数字是如何转换的,这在编程中经常会用到,尤其是C语言. 其他进制向十进制转换 在C语言学习中,二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位的位权为100=1,第2位的位权为101=10,第3位的位权为102=100:而二进制第1位的位权为20=1,第2位的位权为21=2,第

python中的2、8、16、10进制之间的转换

python除法的坑 众所周知,python除法有两个运算符,一个是/,还有一个是//,那么这两个有什么不同之处呢? 从图片可以得知,使用//返回一个float类型,而使用/返回一个int类型.我们总结一下: // 是整除,自动转型位float / 除法 那么如何使用整除运算符返回一个float类型呢? 我们只要让除数和被除数任意一个为float类型进行运算返回就是一个float类型的值. 10.2.8.16进制 像0,1,2,3,4......10这样的数就是10进制,并且满十位进一位,即逢十

java中进制之间的转换

//十进制转其他进制 Integer.toHexString(10); //将10转换为十六进制,返回字符串类型 Integer.toOctalString(10); //将10转为八进制,返回字符串类型 Integer.toBinaryString(10); //将10转为二进制,返回字符串类型 //其他进制转十进制 //十六进制转十进制,例如:0xFFFF Integer.valueOf("FFFF",16).toString(); //valueOf()方法返回Integer类型

不同进制之间的转换

参考文章地址:http://www.cnblogs.com/o-andy-o/p/3410356.html 一. 二进制与十进制之间的转换     a.二进制转十进制(不分整数和小数从最后一位算起,每一位上的数乘以2的几次方,这个次数由这个数字所在的位置决定,从零位开始,然后相加)         01101011.001 转十进制: 第-3位   1乘2的-3次方=0.125第-2位   0乘2的-2次方=0 第-1位   0乘2的-1次方=0第0位    1乘2的0次方=1第1位    1乘

c# 不同进制之间的转换

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));//十进制转八进制Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8));//十进制转十六进制Console.WriteLine("十进制166的十六进制表示: "+Convert.

mysql 10进制与35进制之间的转换 注意Power处理bigint的问题

35进制的目的是防止0和O造成的视觉误差 BEGIN    DECLARE m_StrHex35 VARCHAR(100); -- 返回35进制表示的结果  DECLARE m_Remainder BIGINT; -- 余数  DECLARE m_Base35 VARCHAR(1); SET m_Remainder=0;  SET m_StrHex35='';   WHILE p_Hex10>=35 DO        SET m_Remainder=p_Hex10%35;        SET

java 各进制之间的转换

十进制转换为十六,八,二进制不用写算法直接用 String hexString = Integer.toHexString(int decNum); String octalString = Integer.toOcalString(int decNum); String binaryString = Integer.toBinaryString(int decNum); n进制的nStr转换为十进制,可以用这个函数 String decStr = Integer.parseInt(String