在ARM处理器立即数寻址方式中,立即数是由一个8bit的常数(大于等于0,小于等于0xff)循环右移(需先扩展为32位)偶数bit(0,2,4,...,30)得到的,所以类似0x101,0x102,0xFF1,0xFF04,0x8000007F等都是无效的立即数,而像0xFF,0x3FC,0xC0000003F,0x104,0xFF0,0xFF00,0xf000000f等都是有效的立即数。
现在给你一个32bit的正整数,请你判断这个数是否是有效的立即数。
(0x12345678循环右移4位变为0x81234567。)
一个正整数T (T<= 1000000),表示有T组测试数据
每一组测试数据包含一个32位的十六进制数n (0<= n <= 0xffffffff)
共T行。对于每个n,输出占一行,如果n是有效的立即数输出"YES",否则输出"NO"。
3
0xff
0xFF
0xF0F
YES
YES
NO