我想问一个C语言位操作的问题

[复制链接]
查看11 | 回复3 | 2009-1-17 15:22:02 | 显示全部楼层 |阅读模式
char *itobs(int n, char* ps)
{
int size = 8*sizeof(int);
for (int cnt = size - 1; cnt >= 0; cnt--, n >>= 1)
{
ps[cnt] = (1 & n) + '0';
}
ps[size] = '\0';
return ps;
}
高手们问下。。
那个加'0'是啥意思?
书上说可以转换。。
是怎么个情况。。有点不太明白。
我可不可以这样理解:
(1&n)所得出的0位上不管是1还是0.
在ASCII上都是0000 0000和0000 0001这样表示的
在加上字符'0'ASCII码的二进制是0011 0000
那么刚才所得的
0000 0000 + 0011 0000 = 00110000 即:ASCII码对应的字符'0'

0000 0001 + 0011 0000 = 00110001 即:ASCII码对应的字符'1'

回复

使用道具 举报

千问 | 2009-1-17 15:22:02 | 显示全部楼层
"0"是字符型,加一个整型是讲数组的值转化为字符的ascll码....
回复

使用道具 举报

千问 | 2009-1-17 15:22:02 | 显示全部楼层
那样才是ansi字符...
回复

使用道具 举报

千问 | 2009-1-17 15:22:02 | 显示全部楼层
把数字转换成字符...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行