c语言%-6d n什么意思,C语言高手请解释下这段代码的具体意思。。。。

C语言高手请解释下这段代码的具体意思。。。。

答案:2  信息版本:手机版

解决时间 2020-04-12 09:38

已解决

2020-04-11 12:25

unsigned int

reversw_bits(unsigned int value)

{

unsigned int answer;

unsigned int i;

answer=0;

for(i=1;i!=0;i<<=1){

answer<<=1;

if(value&1)

answer|=1;

value>>=1;

}

return answer;

}

这段程序旨在把value的二进制位模式从左到右变换一下,例如00001011变为11010000.还请高手解释一下这段代码如何实现的,如i的作用是什么?for循环请解释一下。

全部回答

1楼

2020-04-11 13:17

for (i=1; i!=0; i <<= 1): 根据机器的int长度来循环 (在这里可能是16次, 把1移动到字长外面就变成0了) 执行下面的操作;

answer <<= 1: 将结果左移一位;

if (value & 1): 如果value的最低位为1, 则answer |= 1把answer的最低位设为1

value >>= 1: 将初始值右移一位

因为初始值跟结果的移动方向相反, 所以可以实现低位高位互换

2楼

2020-04-11 12:37

int ascii_to_integer(char *string)//是函数定义,函数名为ascii_to_integer.它有一个字符指针,名为string.

int value.//定义value为整型.

value=0;//value赋值后,值为0;

while(*string>='0'&&*string<='9')//这是一个判断语句,意思是*string是个值,就是从实参传来的地址指向的值.现在只要这个值大于零且小于九,(记住&&是且的意思)就成立.就执行花括号里的.

value*=10;//一个复合语句,你可以看成这样.value = value*10(这里的*是乘,不是指针)

value+=*string-'0';//可以看成value = value + *string - '0'(意思是说*string指向的值减去0.后和vlaue相加,最后把值赋给value.

string++;//是指针加一.不是值加一.意思是移到下一个地方后,如果有值赋给它就存储个数.比较一开始是1000.(重点:1000是地址,不是值,那1000加个指针等于多少呢.记住,有的编译器,int是二,一个是四.)

if(*string!='\0')//string的值不等于'\0'就执行value=0;

return value;//返回value.

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值