左シフトは2倍
右シフトは2分の1倍(切り捨て)
#include <stdio.h> int main(int argc, const char * argv[]) { int origin = 0b0111; // 4 + 2 + 1 = 7 int shifted,shifted2,shifted3,shifted4; shifted = origin << 1; // 0b0111 << 1 => 1110 = 8 + 4 + 2 = 14 (7 * 2) shifted2 = origin << 2; // 0b0111 << 2 => 11100 = 16 + 8 + 4 = 28(7 * 2) shifted3= origin >> 1; // 0b0111 >> 1 => 0011 = 2 + 1= 3(7/2 = 3.5 = 3) shifted4 = origin >> 2; // 0b0111 >> 2 => 0001 = 1(3.5/2 = 1.125 = 1) printf("%d",origin);// printf("\n"); printf("%d",shifted);// printf("\n"); printf("%d",shifted2);// printf("\n"); printf("%d",shifted3);// printf("\n"); printf("%d",shifted4);// return 0; }