编程题
位运算 ## 题目描述 位运算是按二进制位进行的一些运算。本题要求对输入的一个32位有符号整数进行如下的位运算:交换整数二进制形式中的第0位和第1位,交换第2位与第3位,…,交换第30位与第31位;然后输出位运算后的整数。本题涉及补码知识: (1) 整数在计算机中是以补码的形式存储的。 (2) 补码中,整数最高位为符号位,为1表示负数,为0表示正数。正数的补码就是其二进制形式。以1字节为例,补码01100001表示一个正数,转换成十进制为97。 (3) 对负数的补码,如何知道该负数的值是多少?最简单的方法是进行如下变换:从补码的最低位(右边)往最高位(左边)看,最右边所有的0及第1个1不变,其余位变反(含符号位)。变换后的补码为一个正数,该正数就是负数的相反数。以1字节为例,如果有一个负数的补码为10101100,变换后的补码为01010100,该补码转换成十进制为84,因此原来的负数为-84。 ## 输入描述 输入文件包含多个测试数据。每个测试数据占一行,为一个正整数。输入文件的最后一行为0,表示输入结束。 ## 输出描述 对每个测试数据,输出位运算后的整数。 ## 样例输入 ```txt 32 1189288988 0 ``` ## 样例输出 ```txt 16 -1982649300 ```
查看答案
赣ICP备20007335号-2