对于整形值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
尽量用移位方式让编译器帮你运算,避免出错,可读性也好

本回答被提问者和网友采纳

第十次作业总结

  1. 密码开锁

Int x=5342;/*变量x用于存放密码值5342*/

Int *p=NULL;/*定义整形指针变量P,NULL值为0,代表空指针*/

P=&x;/*将变量x的地址存储到p中*/

程序中定义了变量x来存放密码,在定义一个特殊的指针变量p,用于存放变量x的地址。这样既可以通过变量名x直接得到密码,也可以在不知道变量名的情况下,通过指针变量p所存放的地址找到密码值。

  1. 与直接使用变量x相比较,使用变量p访问变量x的过程实现了对变量x的见解操作。
  2. 在C语言中,把这种直接专门用来存放变量地址的变量称为“指针变量”,简称为指针。
  3. 定义指针变量的一般形式:

类型名  *指针变量名;

类型名指定指针变量所指向变量的类型,必须是有效的数据类型,如:int,float,char等。指针变量名是指针变量的名称,必须是一个合法的标识符。

  1. 定义指针变量要使用指针声明符:*

例如:int I,*p;

声明变量I是int型,变量p是指向int型变量的指针。

  1. 指针定义的例子

Int *p;

Char *cp;

Float *fp;

Double *dp1,*dp2;

  1. 对指针变量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型变量。

  1. 指针变量名是一个标识符,要按照C标识符的命名规则对指针变量进行命令。
  2. 指针变量的数据类型是他所指向的变量的类型,一般情况下一但指针变量的类型被确定后,他只能指向同种类型的变量。
  3. 在定义指针变量时需要使用指针声明标识符*,但指针声明符并不是指针的组成部分,例如:定义 int*p;说明p是指针变量,而不是*p。

以上是关于对于整形值int a值取其第十bit位值(右手最末位为第一bit位)判断是不是为0或1,如何操作?的主要内容,如果未能解决你的问题,请参考以下文章

python基础3:数据类型

C第十一课

Python Mysqldb 为位值返回 '\x01'

第十次作业总结

Codeforces Round #625

整形int