要输出一个数的二进制形式使用位操作 >> 和 &
- void putBinary(int number)// 将一个 int 整形数字的二进制形式正序, 倒序输出
- {
- int value;
- int i;
- for (i = 31; i>= 0;i--)// 正序
- {
- int value = number>> i & 1;
- printf("%d", value);
- }
- printf("\n");
- for (i = 0; i <= 31; i++)// 倒序
- {
- int value = number>> i & 1;
- printf("%d", value);
- }
- printf("\n");
- }
- void putBinary(char c) // 将一个字符的二进制形式正序, 倒序输出
- {
- int value;
- int i;
- for (i = 7; i>= 0; i--)// 正序
- {
- value = (int)c>> i & 1;
- printf("%d", value);
- }
- printf("\n");
- for (i = 0; i <= 7; i++)// 倒序
- {
- value = (int)c>> i & 1;
- printf("%d", value);
- }
- printf("\n");
- }
- int main(void)
- {
- printf("'0' = %d, A = %d, a = %d\n",'0','A','a');
- printf("'5' - '0' = %d\n",(int)('5'-'0'));
- putBinary(0);
- putBinary(65);
- putBinary(97);
- putBinary('0');
- putBinary('A');
- putBinary('a');
- while (1);
- return 0;
- }
一些其他方法
- void f(int n)
- {
- if (n)
- f(n / 2);
- else
- return;
- printf("%d", n % 2);
- }
- void f(int input)
- {
- int i = 0;
- int arr[32] = { 0 };
- for (i = 0; i <32; i++)
- {
- arr[i] = input % 2;// 除 2 取余法放入数组
- input = input / 2;
- }
- for (i = 31; i>= 0; i--)
- {
- printf("%d", arr[i]);// 余数倒序输出
- }
- }
来源: http://www.bubuko.com/infodetail-2854107.html