比如定义一个 二进制的 i ,在内存中只占一个bit,或者定义一个二进制指针,进行++操作的时候每次地址加一个bit的长度。如果不行的话能不能给出一个把一个整型的数的各位二进制位保存到数组里的最高效的算法。谢谢回答。
第1个回答 2011-07-08
这个需要看目标硬件平台是否支持。例如51单片机内部具有可位寻址寄存器,可通过bdata域声明或专用的bit类型将变量分配到位寻址区。
如果是跨平台编写,可采用位域实现。或直接采用字符型保存各位状态,效率比位域大大提高,缺点是浪费些空间。
如果是跨平台编写,可采用位域实现。或直接采用字符型保存各位状态,效率比位域大大提高,缺点是浪费些空间。
第2个回答 2015-09-24
C语言中没有 “二进制变量”这一说法!
C语言中的数据基本类型包括:char short int long float double . 用哪种类型定义的就叫XX类型变量,如字符型变量,整型变量,浮点型变量。
各种变量中存储的数据,都是以二进制进行存储的。因类型的不同,采用的二进制编译格式不同。如:整形类都是用补码存储,浮点型采用IEEE754标准存储。
对于int a=0x1A ; int b=0101 ;这种变量初始化中,a,b依然是整形变量,0x1A这种以0x开头的数据表示16进制常数(或称常量),0101这种以0开头的数字表示8进制常数。但程序设计中并没有规定二进制常数的表示形式,如果需要使用的话,可以采用字符数组来存储二进制数,如:
char a[100] = "10100101" ;
需要运算时,再通过自定义函数将字符串转换成整数。
C语言中的数据基本类型包括:char short int long float double . 用哪种类型定义的就叫XX类型变量,如字符型变量,整型变量,浮点型变量。
各种变量中存储的数据,都是以二进制进行存储的。因类型的不同,采用的二进制编译格式不同。如:整形类都是用补码存储,浮点型采用IEEE754标准存储。
对于int a=0x1A ; int b=0101 ;这种变量初始化中,a,b依然是整形变量,0x1A这种以0x开头的数据表示16进制常数(或称常量),0101这种以0开头的数字表示8进制常数。但程序设计中并没有规定二进制常数的表示形式,如果需要使用的话,可以采用字符数组来存储二进制数,如:
char a[100] = "10100101" ;
需要运算时,再通过自定义函数将字符串转换成整数。
第3个回答 2011-07-08
c语言中,定义一个int型变量a( int a=0;) ,这样在内存空间中是怎么只有一块内存空间,值为0,程序通过内存地址来找到a,并不会为保存a这个追问
老大没有说清楚额。。。。我想说的是能不能进行bit位操作,如果不行的话,求最好的替代算法。。。。。。
第4个回答 2011-07-08
对具体的比特位是没有指针操作的,你可以利用 位域 来实现你说的功能