32ビット整数型を8つの4ビット値に分割する
/* 32ビット整数型(long int)をとり、それを8つの4ビット値に分割する。符号ビットに注意。 */ #include <stdio.h> int main(){ char c[100]; int i, n, target, ary[8]; fgets(c, sizeof(c), stdin); sscanf(c, "%d", &target); for(i=0, n=0; n<32; n+=4, i++){ ary[i] = (target >> n) & 15; } for(i=7; i>-1; i--) printf("%d ", ary[i]); }
入力: 2147483647*1
出力: 7 15 15 15 15 15 15 15
うーん。こういうことかな?
*1:2^31-1