您的位置:首页 > 编程语言 > C语言/C++

C语言基础——进制转换 / 数据表示

2016-07-17 08:43 225 查看
第一部分:进制转换

二进制:由0~1构成,逢2进1

八进制:由0~7构成,逢8进1

十六进制:由0~9、A~F构成,逢16进1

两个基本概念

基数:n进制基数为n

123.4 = 1*10^2 + 2*10^1 + 3*10^0 + 4*10^-1 

位权:小数点左边第k位位权为   基数^k-1

    小数点右边第k位位权为   基数^-k

其他进制转十进制(按权展开求和法)

十进制  123.4 = 1*10^2 + 2*10^1 + 3*10^0 + 4*10^-1 

二进制  1011.1 = 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 + 1*2^-1= 11.5

八进制  123.4 = 1*8^2 + 2*8^1 + 3*8^0 + 4*8^-1= 83.5

十六进制 123.4 = 1*16^2 + 2*16^1 + 3*16^0 + 4*16^-1 = 291.25

十进制转其他进制

整数部分 :基数除法,倒序取余

小数部分 :基数乘法,顺序取整

十进制 - > 二进制

整数  除2倒序取余
(以4位为单位,不足高位补0)



小数  乘2正序取整
(遇到整数取1,小数再乘2)



其他进制间相互转换

二进制转八进制(3位二进制  =  1位八进制    对应“421”)

0101 1010  ==  132

000=0    100=4

001=1    101=5

010=2    110=6

011=3    111=7

二进制转十六进制(4位二进制  =  1位十六进制    对应“8421”)

0101 1010 == 5A

0000=0      1000=8

0001=1      1001=9

0010=2      1010=A

0011=3      1011=B

0100=4      1100=C

0101=5      1101=D

0110=6      1110=E

0111=7      1111=F

第二部分:数据表示

整形数据的分类

1.无符号整型数据:所有位均表示大小。

N位无符号整型数据表示的取值范围为:0~2N-1

2.带符号整型数据:最高位表示符号:0为正、1为负。常用原码、反码、补码表示。

正数:三码同一。

例:已知x=+76D ,写出x的三码表示(8位)

解:x=+76D=+1001100B

因为x>0

所以:[x]原=[x]反=[x]补=01001100B

负数:






例1:已知x= -76D ,写出x的三码表示(8位)

解:x= -76D= -1001100B

[x]原=1
1001100B 


[x]反=1
0110011B  (原码取反)


[x]补=1 0110100B  (末位加一)

例2:已知:[x]原=[y]反=[z]补=1100 1011B,求出x、y、z的大小关系。

[x]原=1100 1011B                x = -100 1011B

[y]反=1100 1011B

[y]原=1011 0100B                y = -011 0100B

[z]补=1011 0100B 

[b][b][z]原=1100 1100B                z = -100 1100B
[/b][/b]

[b][b]y > x > z[/b][/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言基础 进制