2019.4.9
例题:从键盘上输入一个整数,判断该整型数的高16位所表示的有符号数及低16位所表示的有符号数的奇偶性,并将高16位与低16位分别以十六进制形式和有符号十进制输出。
思路
- 取出高十六位和低十六位
- 判断高十六位和低十六位十进制的奇偶性
- 输出高十六位的十六进制和十进制及其奇偶性
问题
- 高十六位和第十六位不是说它是十六进制咋咋咋,而是32位的电脑内存里存的就是32位的数字,关于数字在内存中的储存形式不太懂
- 位运算不熟悉。
a = n << 16;
c = a >> 16;
b = n >> 16;
32位的n右移16位就只剩下高16位,所以b可以表示n的高16位;
32位的n左移16位之后右边有16个0,这样的数字是不对的,所以还要再右移16位,这样32位的存放位置里左边16位都是0,右边16位就是我们要的数字,所以c可以表示n的低16位
- printf输出不同类型的数不熟悉,如何输出十六进制数字,如何使得前面加上0x,#是什么意思等等