由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教一个C语言的面试题
相关主题
请教一道C语言的题目little endian vs big endian
C 中的typedef 一问c++ template中如何判断类型
谁帮我解释一下这个代码问一个C语言中类型cast的问题
问个小问题C的问题,困惑中
C++中size_type怎么处理?gcc 优化不优化运算结果不一样?gcc 的 bug?
一个简单的C编程问题一个C语言的面试题,有点乱,麻烦看一下
问一个gcc下bit field的对齐问题请教C的类型转换问题
请教(C++)请教怎么用#define实现如下的功能
相关话题的讨论汇总
话题: bit话题: hwreg16话题: unsetn话题: setn话题: c语言
进入Programming版参与讨论
1 (共1页)
g***i
发帖数: 4272
1
应该是很简单的,但是概念性地有点不太明白。
typedef volatile unsigned short int hwreg16_t;
hwreg16_t *p;
p = (hwreg16_t*) 0x208000A0;
Write C code, to set bit 9 in a 16-bit hardware register pointed to by p。
这个bit9是指左边数还是右边数?
假设bit 9 是从右边数,理解没错的话是不是这个操作就是
*p&=0xfeff//set as 0
*p|=0x0100 //set as 1
刚想起一点,这种bit operation的术语,set是不是就是设为1? 设为0叫reset?
X****r
发帖数: 3557
2
You need to assign it back.

【在 g***i 的大作中提到】
: 应该是很简单的,但是概念性地有点不太明白。
: typedef volatile unsigned short int hwreg16_t;
: hwreg16_t *p;
: p = (hwreg16_t*) 0x208000A0;
: Write C code, to set bit 9 in a 16-bit hardware register pointed to by p。
: 这个bit9是指左边数还是右边数?
: 假设bit 9 是从右边数,理解没错的话是不是这个操作就是
: *p&=0xfeff//set as 0
: *p|=0x0100 //set as 1
: 刚想起一点,这种bit operation的术语,set是不是就是设为1? 设为0叫reset?

g***i
发帖数: 4272
3
嗯改了,意思我明白,但这道题的目的是不是就是这样了?

【在 X****r 的大作中提到】
: You need to assign it back.
t****t
发帖数: 6806
4
usually bit count start from 0. so mask of bit 9 is 0x200 or (1<<9). to
reset, use ~(1<<9). you should let compiler count.

【在 g***i 的大作中提到】
: 应该是很简单的,但是概念性地有点不太明白。
: typedef volatile unsigned short int hwreg16_t;
: hwreg16_t *p;
: p = (hwreg16_t*) 0x208000A0;
: Write C code, to set bit 9 in a 16-bit hardware register pointed to by p。
: 这个bit9是指左边数还是右边数?
: 假设bit 9 是从右边数,理解没错的话是不是这个操作就是
: *p&=0xfeff//set as 0
: *p|=0x0100 //set as 1
: 刚想起一点,这种bit operation的术语,set是不是就是设为1? 设为0叫reset?

d****n
发帖数: 1637
5
use macro , no need to calculate the constant
~~~~~~
#include
#define SETN( x ,n) ((x)|=(1<<(n)))
#define UNSETN(x, n) ((x)&=~(1<<(n)))
int main(){
unsigned short int i=1;
SETN(i, 9) ;
printf("%d\n",i);
UNSETN(i, 9) ;
printf("%d\n",i);
}
///output
513
1
a****l
发帖数: 8211
6
usually from right. But in the world of hardware/bit, always ask for
datasheet/reference, never guess.

【在 g***i 的大作中提到】
: 应该是很简单的,但是概念性地有点不太明白。
: typedef volatile unsigned short int hwreg16_t;
: hwreg16_t *p;
: p = (hwreg16_t*) 0x208000A0;
: Write C code, to set bit 9 in a 16-bit hardware register pointed to by p。
: 这个bit9是指左边数还是右边数?
: 假设bit 9 是从右边数,理解没错的话是不是这个操作就是
: *p&=0xfeff//set as 0
: *p|=0x0100 //set as 1
: 刚想起一点,这种bit operation的术语,set是不是就是设为1? 设为0叫reset?

1 (共1页)
进入Programming版参与讨论
相关主题
请教怎么用#define实现如下的功能C++中size_type怎么处理?
C语言跟Java运行速度比较 (转载)一个简单的C编程问题
unsigned long long问一个gcc下bit field的对齐问题
{C语言}请教如何通过变量访问结构体内的各个属性请教(C++)
请教一道C语言的题目little endian vs big endian
C 中的typedef 一问c++ template中如何判断类型
谁帮我解释一下这个代码问一个C语言中类型cast的问题
问个小问题C的问题,困惑中
相关话题的讨论汇总
话题: bit话题: hwreg16话题: unsetn话题: setn话题: c语言