如何在c语言中输出二进制数???

作者&投稿:爨巩 (若有异议请与网页底部的电邮联系)
如何在c语言中输出二进制数???~

可以用 %x格式 输出16进制数,16进制一位拉4位,按8421分布,就是2进制数。1个字节正好用2位16进制表示,转为8位2进制。

下面是三种方式:
①通过模2除2(%2、/2)的方法
num%2——取出二进制的最后一位
num/2——右移去掉二进制的最后一位
通过while循环,依次取出二进制的最后一位数字判断是否为1,若为1则count++,while(num)只有当num变为0时循环结束。
问题:在测试-1出现bug,-1的二进制中应该有32个1,输出却为0。我们将-1带入代码中发现-1%2=0,count不增,然后-1/2=0,循环结束,故输出count的值为0。
解决方案:将变量num的数据类型改为unsigned int (无符号整型),此时表示的是正的整型的最大值,所以当num=-1时,表示二进制为32个1的正数,通过循环可以输出正确的个数。
②通过右移操作符(>>)、按位与操作符(&)实现
Example:当num=10(1010),通过右移操作num>>i,二进制向右移动i位。
//i=0,num>>0,右移0位,此时(1010)&(0001)=0
//i=1,num>>1,右移1位,此时(0101)&(0001)=1,count++
//i=2,num>>2,右移2位,此时(0010)&(0001)=0
//i=3,num>>3,右移3位,此时(0001)&(0001)=1,count++
……
因为二进制共32位,所以循环要执行32次后结束,得到count为2。
缺点:不够高效,必须循环32次。
③通过按位与操作符(&)巧妙运算实现
Example: 当num=15时,
1//num&(num-1)=(1111)&(1110)=(1110)
2//num&(num-1)=(1110)&(1101)=(1100)
3//num&(num-1)=(1100)&(1011)=(1000)
4//num&(num-1)=(1000)&(0111)=0 ,循环停止。共执行4次while循环。

扩展资料
一、指定的某一位数置1
宏 #define setbit(x,y) x|=(1<<y)
二、指定的某一位数置0
宏 #define clrbit(x,y) x&=~(1<<y)
三、指定的某一位数取反
宏 #define reversebit(x,y) x^=(1<<y)
四、获取的某一位的值
宏 #define getbit(x,y) ((x) >> (y)&1)

可以用
%x格式
输出16进制数,16进制一位拉4位,按8421分布,就是2进制数。1个字节正好用2位16进制表示,转为8位2进制。

二进制是不可以直接输出的,但是可以用程序输出
#include
void
f(int
n)
{
if(n)
f(n/2);
else
return;
printf("%d",n%2);
}
int
main()
{
int
n;
while(1)
{
scanf("%d",&n);
if(n<0)
break;
if(n==0)
printf("0");
f(n);
printf("\n");
}
return
0;
}

有八进制,十进制和十六进制,不过没二进制,如果要,只能自己写转化
#include
void
main()
{
int
n
=
11;
printf("%o\n",
n);
printf("%d\n",
n);
printf("%x\n",
n);
}


关于c语言中的%2d,%4.3f的问题
2和4的意义在于,不足2或者4时,左边用空格填补宽度使得宽度达到2或4 所以说,它的用法并不能限制位数显示,只能起到补空的作用,如果超过它的宽度,那么还是以变量本身的宽度为准。希望对你有帮助,望采纳谢谢。

在C语言编程中,如何实现让电脑随机输出一1~9的整数?
rand()函数会返回一个伪随机数,但是这是通过一种数学公式推算出来的,得到的随机数分布太集中,这时候要使用srand()函数来设定产生随机数的种子,一般采用当前时间作为种子,这样可以得到分布比较均匀的伪随机数。rand(),srand()函数位于stdlib.h文件中,取得时间的time()函数位于time.h文件中。rand()%...

C++中如何表示从2到10?
把目光放在第4行代码上,这行代码会在显示器上输出“Hello World”。前面我们已经讲过,puts 后面要带(),字符串也要放在()中。 在C语言中,有的语句使用时不能带括号,有的语句必须带括号。带括号的就是函数(Function)。 C语言提供了很多功能,我们只需要一句简单的代码就能够使用。但是这些功能的底层都比较复杂,...

c语言中如何借用指针输出字符串?
1、使用printf 函数进行输出,其使用的格式转换符为%s,如 char *str = "test";\/\/指针指向一个字符串 printf ("%s\\n", str);\/\/输出str指向的字符串 2、使用puts函数进行输出,如 char *str = "test";puts(str);\/\/输出str指向的字符串,会自动多输出一个换行 3、使用自定义函数进行输出,...

C语言里2&3=什么?
在C语言里++ 读? 就是读C加加,没有其他读法,他表示变数自增1。通常用在回圈里。C语言里的%表示什么? 有两种意思 : 第一、表示整除运算,如3%2=1,但是两边的运算元要为整数 第二、用于输入、输出如scanf("%d",&a),printf("%d",a);k+=2 c语言里这什么意思啊 k是一个指标,...

C语言大神何在!!!?求解如下代码的意思
c+3); break; case 3:putchar(c+2); default:putchar(c+1); break; } } printf("\\n");}\/\/输入1\/\/c-'2'为-1,走default分支,打印'1'+1为'2'\/\/输入2\/\/c-'2'为0,从case 0开始走,打印'2'+4为'6'和case2的 '5'\/\/输入3\/\/c-'2'为1,打印'...

学习C语言需要掌握哪些基本知识?
C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式。 静态存储方式:是指在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。 动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要...

(C语言)有如下程序:输出数组中的全部元素。
第一个for语句,只管到scanf("%d",&a[i]); 读入数据。这个循环结束后,i的值已经是10.第二个for语句,如果想每行输出一个数,应该管到printf("\\n"); 此时,应该讲两个printf语句放到{ }中。这个程序第二个for实际上只管printf("%d",a[i]); 所有的数都显示在一行上。第二个for管打印出...

怎么在C语言里用printf输出一个中文
一般情况下,应用程序采用的字符集为gbk, gb2312,该字符集中一个汉字由两个字节组成,所以在普通的C语言中,汉字是按字符串进行存储和输出的。(另:还有utf8字符集,一个汉字由三个字节组成,详情可查阅utf8字符集)char * p = "张三";输出多个中文:printf("%s\\n", p ); \/\/按字符串输出...

c语言中&是什么意思
c语言中&有两种意思,一种是取地址符,是单目运算符;另一种是位运算符,表示“按位与”,是双目运算符。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。一、何为c语言 C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的...

温州市13468255530: C语言中怎么输出数据的二进制 -
再祥败酱: 没有专门的输出二进制语句 需要自己写函数. 比如 void print_bin(int n) {int i;for(i=sizeof(n)*4-1; i>=0; i --){if(n&(1<<i))printf("1");else printf("0");} }这个是通过位操作 来打印一个int型的所有二进制值的函数.

温州市13468255530: c语言的二进制数值如何直接输出? -
再祥败酱: 1、首先打开vc6.0, 新建一个项目. 2、添加头文件. 3、添加main主函数. 4、定义一个两个数相加的函数binSubtracton. 5、在main函数定义int了性number1,number2, binSub. 6、使用scanf给变量赋值. 7、调用binAddition、binSubtracton. 8、使用printf打印结果.

温州市13468255530: C语言中怎么输出一个数的二进制数呀 -
再祥败酱: #includeint main() { int m, a[17], i, k, p, q; while(scanf("%d", &q) == 1) { if(q < 0) m = - q; else { m = q; } for(i = 0; i <= 16; i ++) { a[i] = 0; } p = q; for(i = 0; (int)m != (int)0; i ++) { a[i] = m % 2; m = (int)(m / 2); } printf("%11d-->", p); if(p < 0) { printf("-"...

温州市13468255530: c语言怎样标准输出二进制? -
再祥败酱: C标准没有输出二进制的,不过用itoa()可以实现到二进的转换 exampleint a = 10; char binbuf[32]; //存储二进制字串的空间 printf("%s\n", itoa(a, binbuf, 2)); //最后一个参数2表示2进制

温州市13468255530: C语言怎么输出二进制数? -
再祥败酱: 有八进制,十进制和十六进制,不过没二进制,如果要,只能自己写转化#include<stdio.h> void main() { int n = 11; printf("%o\n", n); printf("%d\n", n); printf("%x\n", n); }

温州市13468255530: 如何用C语言将一个数值按二进制格式输出? -
再祥败酱: //---------------------------------------------------------------------------#include <stdio.h>#include <limits.h> int main(void) { int a,i=0; unsigned int mark=1<<CHAR_BIT*sizeof(int)-1; scanf("%d",&a); /*输入要查看二进制形式的整数*/ while (mark) { putchar(a&...

温州市13468255530: 在C语言中怎么把一个数转换成二进制然后输出 -
再祥败酱: 可以把这个数循环除以2取余数,同时把这些余数入栈,结束循环后再出栈输出就好了

温州市13468255530: c语言以二进制输出 -
再祥败酱: #include#include void main(){ int number=43;char string[100]; itoa(number,string,2); printf("原数=%d 二进制数=%s\n",number,string); }这个可以满足你吗?让程序输出反码补码好像要求有点高.你根据我写的程序自己算一下反码补码并不是一件很难的事.

温州市13468255530: C语言怎么输出二进制数?
再祥败酱: 转换成字符串输出.

温州市13468255530: C语言能输出二进制数吗? -
再祥败酱: 当然可以输出了的啊,但是在输出的时候需要进行转换的,现在提供一个十进制到任意进制的转换程序,你可以在编写程序的时候参考一下. 源程序如下: #include<stdio.h> #include<math.h> void main() {int i=0,n,j,a[20],b[20],k,c=0;double m,x...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网