对于整形值int a值取其第十bit位值(右手最末位为第一bit位)判断是不是为0或1,如何操作?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于整形值int a值取其第十bit位值(右手最末位为第一bit位)判断是不是为0或1,如何操作?相关的知识,希望对你有一定的参考价值。
我知道是要做与操作,具体拿a和什么与?
#include<stdio.h>int main()
int a;
scanf("%d",&a);
printf("%d的右数第10位是%d\\n",a,(a&(1<<9))!=0);
return 0;
参考技术A #include <stdio.h>
int main(void)
int b=0;
int a=0x200 //0x200 就是第十位的值为1,0x400就是第十一位的值为1
b=a>>9; //向右移9位,就相当于取第10位的值了。
if( ( b & 0x01 ) == 1 ) //检查第十位的值
printf("这里就是第十位为1");
else
printf("这里就是第十位为0");
return 0;
参考技术B 0000 0000 0000 0000
(a & (1 << 10) == 0则说明那一位是0
否则是1追问
那我直接
if(a&512)可以吗?
可以的
之前没看清要求,应该是1<<9
尽量用移位方式让编译器帮你运算,避免出错,可读性也好
第十次作业总结
- 密码开锁
Int x=5342;/*变量x用于存放密码值5342*/
Int *p=NULL;/*定义整形指针变量P,NULL值为0,代表空指针*/
P=&x;/*将变量x的地址存储到p中*/
程序中定义了变量x来存放密码,在定义一个特殊的指针变量p,用于存放变量x的地址。这样既可以通过变量名x直接得到密码,也可以在不知道变量名的情况下,通过指针变量p所存放的地址找到密码值。
- 与直接使用变量x相比较,使用变量p访问变量x的过程实现了对变量x的见解操作。
- 在C语言中,把这种直接专门用来存放变量地址的变量称为“指针变量”,简称为指针。
- 定义指针变量的一般形式:
类型名 *指针变量名;
类型名指定指针变量所指向变量的类型,必须是有效的数据类型,如:int,float,char等。指针变量名是指针变量的名称,必须是一个合法的标识符。
- 定义指针变量要使用指针声明符:*
例如:int I,*p;
声明变量I是int型,变量p是指向int型变量的指针。
- 指针定义的例子
Int *p;
Char *cp;
Float *fp;
Double *dp1,*dp2;
- 对指针变量p赋值
P=&I;
P=0;
P=NULL;
P=(int*)1732;
第一条语句中的指针p被看做是指向变量i或存放变量i的地址,也就是将指针p和变量i关联起来。
第二条和第三条语句说明了怎样把特殊值0赋值给指针p,这时指针的值为NULL。常量NULL在系统文件stdio.h中被定义,其值为0,将他赋给指针时代表空指针,C语言中的空指针不指向任何单元。
最后一条语句中,使用强制类型转换(int*)来避免编译错误,表示p指向地址为1723的int型变量。
- 指针变量名是一个标识符,要按照C标识符的命名规则对指针变量进行命令。
- 指针变量的数据类型是他所指向的变量的类型,一般情况下一但指针变量的类型被确定后,他只能指向同种类型的变量。
- 在定义指针变量时需要使用指针声明标识符*,但指针声明符并不是指针的组成部分,例如:定义 int*p;说明p是指针变量,而不是*p。
以上是关于对于整形值int a值取其第十bit位值(右手最末位为第一bit位)判断是不是为0或1,如何操作?的主要内容,如果未能解决你的问题,请参考以下文章