首页 > 试题广场 >

在横线处补充( ...

[不定项选择题]
在横线处补充()可以结果输出值为80000007。
#include <stdio.h>

int convert(int i) {
    return ___________________;
}

int main() {
    int value = 7;
    printf("%x\n", convert(value));
    return 0;
}


  • i|=1<<31;
  • i&=1<<31;
  • i&=~(1<<31);
  • i^=1<<31;
垃圾题目,D也是对的
发表于 2019-09-02 15:34:35 回复(0)
<< 左移 用来将一个数的各二进制位全部左移N位,高位舍弃,低位补0。
>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0。
& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。 
l 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1,否则为0。
~ 代表按位取反,对每个二进制进行取反,0变1,1变0。
^ 是按位异或,每一位相同取0,不同取1。
答案A和D都是正确的
发表于 2020-02-26 10:43:53 回复(0)
选A
7(32位)== 00000000 00000000 00000000 00000111
|   (或)   (有1为1)
1 << 31   == 10000000 00000000 00000000 00000000
最终         == 1000 0000 0000 0000 0000 0000 0000 0111 == 80000007   (8421法)

选D
7(32位)== 0000 0000 0000 0000 0000 0000 0000 0111
^   (异或)(相同为0,不同为1)
1 << 31   == 1000 0000 0000 0000 0000 0000 0000 0000
最终        == 1000 0000 0000 0000 0000 0000 0000 0111 == 80000007   (8421法)
发表于 2023-09-15 23:40:51 回复(0)
A 指定位写1 B 指定位写0 C 判断指定位是否为0 D 指定位取反 仔细想想性质,你会发现新大陆
发表于 2023-07-06 08:04:00 回复(0)
D不是80000006吗??
发表于 2022-12-08 20:05:59 回复(0)
最终输出值为16进制。
1、80000000表示2^31,所以1<<31
2、value本身就是7,进行左移后,取或、异或都可以实现80000007
发表于 2022-08-15 21:18:19 回复(0)
垃圾题,啥玩意么
发表于 2022-07-29 10:35:31 回复(0)
^ 是按位异或,每一位相同取0,不同取1。
发表于 2021-10-27 00:15:22 回复(0)
不用考虑溢出吗

发表于 2020-04-21 18:06:30 回复(1)
左右或者右移 数据《移动位数 数据》移动位数
发表于 2020-04-20 23:07:16 回复(0)
本以为找到一个刷题app,没想到好多错题
发表于 2019-10-29 14:53:28 回复(1)