…将其低八位全置为一,高八位保持原样,并以十六进制输出?
例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。 按位与运算通常用来对某些位清0或保留某些位。
A)八进制数227 B)十进制数789 C)十六进制数1FF D)二进制数1010001 【答案】:B 【解析】:解答这类问题,一般都是将这些非十进制数转换成十进制数,才能进行统一的对比。非十进制转换成十进制的方法是按权展开。
我用C语言来回答这个问题。16位就是一个2字节整数。
void main(void){ unsigned char m,n;unsigned int s;m=64;n=71;s=m*n;P1=s8; //这样写你应该可以理解了 P0=s; //一个16位数直接赋值给8位变量,潜规则就是只取低八位。
由于2^3=8,所以三位二进制位可以用一个八进制位来表示,以小数点为界,分别往高、低位每3位为一组,不足用0补全。
C语言问题
C语言中,函数的隐含存储类型是( )①auto ②static ③extern ④无存储类别 「解」由于C函数内不能再定义函数,C函数的存储类型只能是静态的或外部的之一。
{ int a=5;printf(%d,A);} 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
“left operand must be l-value”的意思是左操作数必须是左值。左值(l-value):出现于“=”左边的标识符。(为变量)。右值(r-value):出现于“=”右边的标识符。(变量或表达式)。表达式:产生确定不变的值。
scanf 是输入语句,%2d%2d%3d,&a,&b,表示按照两位整数的格式依次获取两个输入的数据,并且分别存储在变量和变量b中,所以 a=12,b=34。
C语言:高低八位以及float与double(%f和%lf)
1、用了float是否能用%lf,double能否用%f,%f和%lf分别保留几位小数 -》 float可以用%lf, 值当做双精度double来显示,结果与%f没有不同。
2、双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。
3、c语言是%if对应double,%f对应float。scanf():“%lf”用于double类型,“%f”用于float类型printf():“%f”既可用于double类型,也可用于float类型,意思是指“保留6位小数”。