考察二进制向int或uint转换时的最高位处理

//最高位的变化
#include "stdio.h"
#include "cstring"
using namespace std;

int  main(){
    unsigned short A = 10;//2B,16bits,0000 0000 0000 1010
    //若unsigned short输出,~A = 1111 1111 1111 0101 = 2^16 - 11 = 1024*64-11
    
    
    printf("0xFFF5 = %d\n", 0xFFF5);
    printf("0xFFFFFFF5 = %d\n", 0xFFFFFFF5);
    printf("0xFFFFFFF5 = %u\n", 0xFFFFFFF5);//Uint输出,4B
    int s = sizeof(unsigned short);
    
    printf("sizeof(unsigned short) = %d\n", s);
    
    printf("~A = %u\n", ~A); //Uint输出,4B
    
    char c=128; //128 二进制 1000 0000 ,
    printf("c=%c\n",c);//单个字符输出,1B 不是128
    //printf("c=%s\n",c);//error
    
    int ss = sizeof(char);
    
    printf("sizeof(char) = %d\n", ss);
    
    printf("c=%d\n",c);//int输出,-128
    //单字节二进制 1000 0000,转化为4B---1111 1111 1111 1111 1111 1111 1000 0000
    //负数,取反加1---1000,0000,0000,0000,0000,0000,0111,1111+1

  printf("c=%u\n",c);//c=4294967168
 
  printf("c=%u\n",0xFFFFFF80);
 
    return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值