信息的处理和表示-整数

一、整数

符号类型含义
B 2 T w B2T_w B2Tw函数二进制转补码
B 2 U w B2U_w B2Uw函数二进制转无符号数
U 2 B w U2B_w U2Bw函数无符号数转二进制
U 2 T w U2T_w U2Tw函数无符号转补码
T 2 B w T2B_w T2Bw函数补码转二进制
T 2 U w T2U_w T2Uw函数补码转无符号数
T m i n w Tmin_w Tminw常数最小补码值
T m a x w Tmax_w Tmaxw常数最大补码值
U m a x w Umax_w Umaxw常数最大无符号数

无符号数的编码

对于向量 x → = [ x w − 1 , x w − 2 , ⋯   , x 0 ] \overrightarrow x=[x_{w-1},x_{w-2},\cdots,x_0] x =[xw1,xw2,,x0]:

B 2 U w ( x → ) = ∑ i = 0 w − 1 x i 2 i B2U_w(\overrightarrow x)=\sum_{i=0}^{w-1}x_i2^i B2Uw(x )=i=0w1xi2i

U M a x w = 2 w − 1 UMax_w=2^w-1 UMaxw=2w1

补码编码

最高有效位解释为负权。

对于向量 x → = [ x w − 1 , x w − 2 , ⋯   , x 0 ] \overrightarrow x=[x_{w-1},x_{w-2},\cdots,x_0] x =[xw1,xw2,,x0]:

B 2 T w ( x → ) = − x w − 1 2 w − 1 + ∑ i = 0 w − 2 x i 2 i B2T_w(\overrightarrow x)=-x_{w-1}2^{w-1}+\sum_{i=0}^{w-2}x_i2^i B2Tw(x )=xw12w1+i=0w2xi2i

T M i n w = − 2 w − 1 TMin_w=-2^{w-1} TMinw=2w1

T M a x = 2 w − 1 − 1 TMax=2^{w-1}-1 TMax=2w11

C语言标准没有要求用补码的形式来表示有符号整数, 但是几乎所有的机器都是这样做的。

无符号和有符号数之间的运算

当执行一个运算时,如果一个运算数是有符号的,而另外一个是无符号的,那么C语言会隐式的有符号参数强制类型转换为无符号数,并假设两个数都是非负的

数据扩展

  1. 无符号数转换成更大的类型数据:在表示的开头添加0。这种扩展称呼为零扩展

  2. 补码数转换成更大的数据类型(符号扩展):将补码的最高有效位扩展,这种扩展称之为符号扩展。原理为下述公式,可以简单证明得到。
    B 2 T w + 1 ( [ x w − 1 , x w − 1 , x w − 2 , ⋯   , x 0 ] ) = B 2 T = ( [ x w − 1 , x w − 2 , ⋯   , x 0 ] B2T_{w+1}(\textcolor {blue}{[x_{w-1},x_{w-1}},x_{w-2},\cdots,x_0])=B2T_=([\textcolor {blue}{x_{w-1}},x_{w-2},\cdots,x_0] B2Tw+1([xw1,xw1,xw2,,x0])=B2T=([xw1,xw2,,x0]

  3. short sx=-12345;
    unsigned uy=sx;	/*4294954951*/
    
    • unsigned默认为unsigned int
    • 数据扩展无符号有符号数据转换同时存在时,先进行改变大小,再进行有符号到无符号的转换
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值