C移位转换

一:

unsigned long i;  /* unsigned long 类型为4字节*/
char c1=0xa4;
char c2=0x31;

i = c2<<8 | c1;
问:i =         (用16进制格式)    

 

i=0xffffffa4

二:

unsigned long i; /* unsigned long 类型为4字节*/
char c1=0x74;
char c2=0x31;

i = c2<<8 | c1;
问:i =        (用16进制格式)

i=0x3174

 

计算机数值存储原理:
char a = 0x74 = 116;(char 从-128~128)
存储:01110100(正的)
i = c2<<8 | c1; = 0x3100 | 0x74 = 0x3174
char a = 0xa4 = 164 = -92;(其实是一个负数表示在char里)
存储:11111111 11111111 11111111 10100100
i = c2<<8 | c1 = 0x3100 | 0xFFFFFFA4 = 0xFFFFFFA4

 

 

注:

char c1=0xa4;   (char类型为8位)
         c1=10100100   (二进制)

       最高位1表示负数,0表示正数。

      负数存储在计算机中必须为正数,转换的口诀为:

      负数的绝对值的二进制形式,按位取反再加一。

 

    如本例中的:

     char c1=0xa4=10100100---------->|10100100| (绝对值的二进制形式)--------->01011011 (按位取反)----------->01011100 (加1)等于92,其实也就是-92存储在计算机中。
    

        

 



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值