二进制,十进制,十六进制转换

思前想后:

接下来我们细致理解进制之间的转换

一:2进制转换为16进制:

把二进制数从低位到高位每4位组成一组,直接用16进制数来表示即可,例如:

0011 0101 1011 1111

3 5 B F

这里很好拼凑,1,2,4,8权相对应的位置只要是1,咱们加起来就可以了

第一个末尾俩1(1+2=3),接着(1+4=5),接着(1+2+8=B)最后(1+2+4+8=F),记住

1,2,4,8的顺序就好了

所以 0011010110111111B=35BFH

注意:十六进制数以H为后缀,十进制D,八进制O,二进制B,这里的末尾B和H是强调是什么进制的)

二:16进制转为2进制

把16进制数中每一位用4为二进制数来表示(不足四位用0补充),即可得到相对应的二进制数,例如:

A 1 9 C

1010 0001 1001 1100

同上(在1,2,4,8中),A=2+8,所以二进制数中从右到左第2位和第四位是1,即1010

9=1+8,所以在二进制数从右到左第一位和第四位是1,即1001

三:2进制转换为10进制数

各位二进制数码乘以与其对应的权之和即为与该二进制数对应的十进制数:例如

1011100.10111B = 2^6+2^4+2^3+2^2+2^-1+2^-3+2^-4+2^-5 = 92.71875D

四:10进制转换为2进制

把要转换的十进制数的整数部分不断除以2,并计下余数,直到商为0为止,例如:

整数N=117D

117/2=58余1(a0=1)

58/2=29余0 (a1=0)

29/2=14余1(a2=1)

14/2=7 余0 (a3=0)

7/2=3余1 (a4=1)

3/2=1余1(a5=1)

1/2=0余1(a6=1) 用短除法更快一点

即N=117D=1110101B

对于被转换的十进制数的小数部分则应不断乘以2,并计下其整数部分,直到结果的小数部分为0为止

例如小数 N=0.8125D

0.8125*2=1.625 (b1=1)

0.625*2=1.25 (b2=1)

0.25*2=0.5 (b3=0)

0.5*2=1.0 (b4=1)

所以N=0.8125D=0.1101B

五:16进制数转换为10进制数

各位十六进制数与其对应权值的乘积之和即为相应的十进制数,例如:

N=BF3CH

=11*16^3+15*16^2+3*16^1+12*16^0

=48956D

六:10进制转换为16进制

1:可以先转换为2进制再转换为16进制

2:除法:把要转换的十进制数的整数部分不断除以16,并记下余数,直到商为0为止:例如:

N=48956D

48956/16 = 3059 余12(a0=12)

3059/16=191 余3 (a1=3)

191/16=11 余15 (a2=15)

11/16 = 0 余11 (a3=11)

所以:N=48956D = BF3CH

原码,补码,反码

原码:最高位表示符号(正数用0,负数用1),其它位表示数值位,称为有符号数的原码表示法,例如:

N=45=00101101B 【N】原码=0 0101101B

M=-45 【M】原码=1 0101101B

反码:正数的反码与原码相同,符号位用0表示,数值位值不变。负数的反码符号位用1表示,数值位为原码数值为按位取反形成,即0变1,1变0,例如:

N=45=00101101B 【N】反码=0 0101101B

M=-45 【M】反码=1 1010010B

补码:正数的补码与原码相同,即符号位用0表示,数值位值不变。负数的补码为反码加1形成,例如:

N=45=00101101B 【N】补码=00101101B

M=-45 【M】补码=11010011B

例如:11000111=-57计算方式:

最高位为1,先加负号

接着取反码+1=00111001=57

即-57

二进制加法

在这个例子当中

25 的原码:00011001 -25的补码为:11100111

32 的原码:00100000 -32的补码为:11100000

即-25等于25的反码+1

最终的结果为 11000111即-57,将其反码加1之后转化为十进制为57(验证了结果的正确性)

在这里11000111最前面应该还有个1,在这里系统将其抛弃了(但不是彻底抛弃,这里的进位被PSW寄存器里记录了,去掉他并不影响结果)

补码的表数范围

N位二进制数能够表示的 无符号整数范围:0 ~ 2^n – 1

如8位:0~255 (8个位都表示数值了,最大2^8-1)

N位二进制数能够表示的 有符号整数范围:-2^(n-1) ~ 2^(n-1) – 1

如8位:-128~127 (因为最高位0,1表示正负,其余7位才表示数值,最大2^7-1)

计算11111111转换为十进制数:

  • 无符号:2^8-1=255
  • 有符号:最高位是1,先确定是负数

接着取反码:0000 0000

接着+1

0000 0001 = 1

加上确定是负数,最终结果为-1

所以无符号时为255,有符号时为-1

发表回复

相关推荐

工作室、小公司怎么保存文件?群晖 NAS 集中存储、分享文件,提升工作效率、文件安全

作为一台功能齐全的 NAS,它在你的工作场上甚至能够发挥更大的作用。小型的办公室或工作室可以考虑一下我们桌面机型,为什么呢?

· 9分钟前

騰訊QQ PC版正確的安裝姿勢 讓您不受騰訊qq的騷擾(上)

2023年7月更新以下信息可能過時瞭 騰訊搞出一個NT新架構QQ 有需要的可以轉戰瞭2019年9月更新騰訊近期已在微軟應用商店Microso...

· 10分钟前

TOMM杂志是水刊吗?是不是预警期刊?投稿周期多久

学术期刊《ACM Transactions on Multimedia Computing Communications and Applications》这是一份档案期刊,有印刷版和数字 ...

· 10分钟前

管理基礎知識第三章組織第五節組織文化

文化力是組織生存與發展的基本要素之一,是構成組織核心競爭力的基本要素組織文化發源於美國,但實踐在日本,較快發展組織文...

· 11分钟前

中國聚偏二氯乙烯薄膜行業發展現狀及前景預測報告2024 VS 2029年

中國聚偏二氯乙烯薄膜行業發展現狀及前景預測報告2024 VS 2029年1 聚偏二氯乙烯薄膜市場概述1.1 聚偏二氯乙烯薄膜行業概述及...

· 14分钟前