下列代码,循环了多少次
int k = 2000; while (k > 1) { k = k >> 1; }
A. 10 B. 11 C. 12 D. 20
2000 的二进制表示是 11111010000。
每次右移一位,相当于去掉最右边的一位:
11111010000 (2000) 1111101000 (1000) 111110100 (500) 11111010 (250) 1111101 (125) 111110 (62) 11111 (31) 1111 (15) 111 (7) 11 (3) 1 (1) 当 k 变为 1 时,循环停止。
因此,总共循环了 10 次。
正确答案是:
A. 10
大于,不能等于所以不是11
2000的二进制是1111 1010 0000 右移十次就可以变成0000 0000 0001 也就是十进制的1
把下面代码跑一下就知道了
#include <stdio.h> int main() { int k = 2000; int num = 0; while (k > 1) { k = k >> 1; num++; } printf("%d\n", num); return 0; }
答案是10
楼下别信chatgpt的,chatgpt只有及格的水平,考研想上岸没戏的
LEK 回复 月溅星河: 没说信chatgpt 只是拿着问了一下而已,我当然知道正确答案是什么,况且我去年就已经上岸了
chatgpt说到是11次
789rt 回复 LEK: 相信GPT还是相信我是秦始皇?
LEK 回复 LEK: 我相信gpt是人工智障 也相信你是赵高
LEK 回复 LEK: 1
计算从2000连除以2除到1需要多少次即可
A
>>是位移符...
用户登录可进行刷题及查看答案
>>是位移符号。可以理解为每次除以2.
从k=2000直到k=1,共需10次位移操作
登录后提交答案