分析并写成以下程序的运行结果(int型用4个字节表示整数)。
#include<stdio.h>void main(){ unsigned a,b,x; int n; a=0xABCD; n=2; b=a<<(4*n); x=(a>>4*n)|b; printf("b=%X,x=%X\n",b,x);}
答:分析:由题a的初值为0xABCD(十六进制数),a<<(4*n)表示二进制左移4*n位,即十六进制左移n位,那么b=ABCD00。a>>4*n即十六进制右移n位,值为AB;那么x=(a>>4*n)|b,即x=AB|ABCD00=ABCDAB。最后输出b,x的值。运行结果:b=ABCD00,x=ABCDAB
【考点】本题考查C语言--数据的表现形式及其运算--运算符与表达式--各类运算符的用法。【解析】左移运算符(<<):对一个二进制数的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0);右移运算符(>>):对一个二进制数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃;按位或运算符(|):两个数据对应位置进行或运算,参加运算的两个对象只要有一个为'1',结果就为'1',两者同时为'0',结果才为'0'。
扫描微信二维码,添加您的专属老师为好友
您在考试中遇到任何问题,老师都会帮您解答
您希望我们通过哪种方式与您联系?
您已选择电话/微信/QQ的联系方式,课程顾问会尽快联系您!
您已选择微信联系方式,课程顾问会尽快添加您的微信,请您确认通过!
您已选择QQ联系方式,课程顾问会尽快添加您的QQ,请您确认通过!
您已选择电话联系方式,课程顾问会尽快联系您!
您已选择“不联系”,课程顾问不会主动联系您。如果后续您有需求,可以在个人中心主动添加销售微信或拨打客服电话:400-111-9811