【输出一个整数的二进制存储形式】

// 输出一个整数的二进制存储形式
void putBinary(int n)
{
  int bits = sizeof(n) * 8;
  while (bits-->0) {
    printf("%d", n>>bits&1);
    if (bits%4==0) printf(" ");
    }
    printf("\n");
}

时间: 2024-08-01 06:30:24

【输出一个整数的二进制存储形式】的相关文章

求一个整数中二进制1的个数

题目:求一个整数二进制表示1的个数 第一版: 思路:如果一个整数与1做与运算,结果为1,那么该整数最右边一位是1,否则是0: int NumberOf1(int n) { int count = 0; while (n) { if (n&1)//如果一个整数与1做与运算的结果是1,表示该整数最右边是1,否则是0: { count++; } n = n>>1; } return count; } 缺点:因为代码当中有右移,当是负数的时候,要考虑符号位:如果一个正数,右移之后在最左边补n个

顺序输出一个整数的各位数字

从高位开始逐位输出一个整数的各位数字:输入一个整数,从高位开始逐位分割并输出它的各位数字. #include<stdio.h> int main(void) { int i,j,m,n,s,k,a,b=0; scanf("%d",&m); k=m; do { m=m/10; b++; }while(m!=0); for(i=1;i<=b;i++) { s=k; for(j=1;j<=b-i;j++) s=s/10; n=s%10; printf(&quo

一个整数的二进制表示中有多少个1

题目: 一个整数存储在内存中,输出它的二进制表示中1的个数 思路: 要判断这个整数的二进制表示中1的个数,联想到这是[位运算]的题目. 最先想到巧妙利用[1]这个数,[1]只有最右一位是1,其他位均为0: 所以,接下来应该想到,用“1”和这个整数做[与运算],首先可以判断最右边一位是不是1,以此类推,该整数每右移一位,和1做与运算,直到该整数变为0.至此,问题思路已有,但是考虑非正常数字,比如[负数],该方法就不适用,因为负数二进制需要保持最高位一直为1,最后会陷入死循环(OXffffffff)

计算机中数字的二进制存储形式

今天,做个关于二进制的算法题,突然有个问题一直想不通为什么~5是6,计算机基础知识不过关啊,所以现在来弥补下,正数和负数在计算机中是怎么存储和计算的. 讲讲计算机中的存储形式: 计算机中存储的数都是以补码的方式存储的,而正数的原码,反码,补码都是一样的.但是负数的原码,反码,补码是不一样的. 下面都是以java中的int i=5为例. 正数5的原码就是其二进制码:00000000 00000000 00000000 00000101 反码是:00000000 00000000 00000000

openjudge #输出一个整数序列中与指定数字相同的数的个数。

输入格式 输入包含三行:第一行为N,表示整数序列的长度(N <= 100):第二行为N个整数,整数之间以一个空格分开:第三行包含一个整数,为指定的整数m 输出模式 输出为N个数中与m相同的数的个数. 样例输入 3 2 3 2 2 样例输出 2 #include<stdio.h> int main() { int a[100],n,i,m,count; while(scanf("%d",&n)!=EOF) { count=0; for(i=0;i<n;i+

【C语言】输出一个整数的每一位

#include<stdio.h> int main() { int n; printf("请输入一个五位整数:");    // 在此输入五位数,若有需要,可更改 scanf("%d",&n); printf("%d %d %d %d %d\n",n/10000,n%10000/1000,n%1000/100,n%100/10,n%10); return 0; }

输出一个寄存器的二进制值

;miOS ORG 0X7C00 JMP ENTRY DB 0x90 DB "HARIBOTE" DW 512 DB 1 DW 1 DB 2 DW 224 DW 2880 DB 0xf0 DW 9 DW 18 DW 2 DD 0 DD 2880 DB 0,0,0x29 DD 0xffffffff DB "HARIBOTEOS " DB "FAT12 " RESB 18 ENTRY: MOV AX,0 MOV SS,AX MOV SP,0X7C00

输出一个整数的全排列

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 // 数组a用来保存一种排列,也就是说100以内数(不包括100)的排列 5 int a[100], n, count = 0; 6 // 交换数组中的两个元素 7 void swap(int t1, int t2) 8 { 9 int temp; 10 temp = a[t1]; 11 a[t1] = a[t2]; 12 a[t2] = temp; 13 } 14 // 用来输出一种排列

输出一个整数的每一位

 #include<stdio.h> int main() { int a,b,c,number; scanf("%d",&number); printf("百位:%d\n",a=number/100); printf("十位:%d\n",b=(number-100*a)/10); printf("个位:%d\n",c=number-100*a-10*b); return 0; } 以此类推,若该数不止三位