C语言高八位是什么?
unsignedshorta=256;charb=a;printf("%d",b);这样赋值后,输出变量b的值并非预期的256,而是0,原因是256超出了char类型能够...
unsigned short a = 256;
char b = a;
printf("%d",b);
这样赋值后,输出变量b的值并非预期的256,而是0,原因是256超出了char类型能够装载最大值,b只截取了a的低8位的数据,如下:
变量a:
0000000100000000
变量b:
高8位被截掉了!00000000
着些高八位和0都是什么意思啊? 展开
char b = a;
printf("%d",b);
这样赋值后,输出变量b的值并非预期的256,而是0,原因是256超出了char类型能够装载最大值,b只截取了a的低8位的数据,如下:
变量a:
0000000100000000
变量b:
高8位被截掉了!00000000
着些高八位和0都是什么意思啊? 展开
4个回答
展开全部
计算机存储的数据都是二进制形式,你知道的吧?1个二进制的0或1称为1位,每8个位称为1字节,而计算机内存中的数据是以字节为单位存在的,也就是说所有的二进制数据的位数都是8的倍数。
8位的二进制数最大可以是11111111,看成无符号整数的话是255,所以256必须至少要16位的二进制数来存储,所以a是16位,而b是char类型,是8位,把16位的数据赋值给8位的变量的话,会自动截取低8位赋给8位的变量。
8位的二进制数最大可以是11111111,看成无符号整数的话是255,所以256必须至少要16位的二进制数来存储,所以a是16位,而b是char类型,是8位,把16位的数据赋值给8位的变量的话,会自动截取低8位赋给8位的变量。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
unsigned short 有16位(2进制数)
char 只能装 8位(2进制数)
b = a; 把16位数 赋给8位的b ,b只能装右边的 8位,
左边的8位丢了失了。
左边8位 -- 高八位。
char 只能装 8位(2进制数)
b = a; 把16位数 赋给8位的b ,b只能装右边的 8位,
左边的8位丢了失了。
左边8位 -- 高八位。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a原本有16位(第0位到第15位)。高8位就是其中的第8位到第15位。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询