越界的转换

short s = 0xFF;
unsigned short u = 0xFF;
printf("s=%d,u=%d\n", s,u);

s = 0x7FFF;
u = 0x7FFF;
printf("s=%d, u=%d\n", s,u);

s = s+1;
u =u+1;
printf("s=%d, u=%d\n", s,u);//-32768 32768

u =-16;
s =-16;
printf("s=%d, u=%d\n", s,u); // u -16+65536 = 65520


u = 65535
s = 65535
printf("s=%d, u=%d\n", s,u); // s 65535 -65536 = -1
u = 0xabcd;
s = 0xabcd;

printf("s=%d, u=%d\n", s,u); //0xabcd - 65536 = -21555

越界的转换 负的加 正的减 最大值
原来的数是负数 加最大值
原来的数是正数 减最大值

 

unsigned int n;
printf "%d", n/10/10/10/10/10/10/10%10

signed int n 越界输出负数
printf "%d", n/10/10/10/10/10/10/10%10

 

BKMGT
1K =1024 b  2^10
1M = 1024K  2^20
1G = 1024 M  2^30 

4G = 2^32
1T = 1024 G
64K = 64*1024 = 65536


2G = 0X80000000//正负分界
4G = 0X100000000

posted @ 2021-06-01 09:30  mwლ(′◉❥◉`ლ)  阅读(70)  评论(0)    收藏  举报