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都是什么意思啊?
展开
 我来答
一骑当后
推荐于2017-10-07 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40298 获赞数:306448
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部

  字符型为一个字节,就是8位;整型为二个字节,就是16位。

  低8位和高8位是相对整型来说的;

  比如,下图这个二进制数:

  从右往左数是从第0位到第15位,红的是高八位,蓝的是低八位。

忘至白葬不情必0T
推荐于2017-10-01 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
计算机存储的数据都是二进制形式,你知道的吧?1个二进制的0或1称为1位,每8个位称为1字节,而计算机内存中的数据是以字节为单位存在的,也就是说所有的二进制数据的位数都是8的倍数。
8位的二进制数最大可以是11111111,看成无符号整数的话是255,所以256必须至少要16位的二进制数来存储,所以a是16位,而b是char类型,是8位,把16位的数据赋值给8位的变量的话,会自动截取低8位赋给8位的变量。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L_o_o_n_i_e
2011-11-02 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5259万
展开全部
unsigned short 有16位(2进制数)
char 只能装 8位(2进制数)
b = a; 把16位数 赋给8位的b ,b只能装右边的 8位,
左边的8位丢了失了。
左边8位 -- 高八位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2011-11-02 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
a原本有16位(第0位到第15位)。高8位就是其中的第8位到第15位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式