用位运算如何实现十进制数转换成二进制数?用C或C 语言

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
最讨厌的是必须用位运算法。

                                                                                                C++就是C的拓展,直接学C++也行,不过难度比较大啊。不如直接学C语言。其实你若不是想编程序,学这些东西除了过计算机等级考试都没什么用。非计算机专业的话关键是掌握编程的基本思想,学C就好了。甚至有人建议学javascript,actionscript这些比较简单的脚本语言就够了,而且还使用些。计算机专业的新生的话,我也听过有的学校是直接学C++的。c++是一种语言,VC++是微软开发的一个c/c++的集成开发工具,单从语言的角度VC++就是Stroustrup所说的c++的一个implementation。VC++和其它(如g++)cpp秒秒年年implementation的不同支持之处在于:1.它集成了MFC--一个windows下的应用框架,这使用它开发windows下的应用程序相对简单。但MFC本身并不是c++语言的一部分。2.由于VC++是微软的产品,它也就有了微软的特色:总是试图建立自己的标准。因此,它与ISO c++并不完全兼容,这也是有的c++程序在其它平台下能正常编译但在VC里缺报错的原因。                                       
提问者对答案的评价:

                                                                                                相信位运算你的课本上已经有了,就不再说了。程序的主要思想是:按位与的特点是,是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。也就是说,按位与运算有3个对象,分别是两个参与运算的两个数和运算有的结果。这个和小学学习的普通加法一样。如:a+b=c,,a,b,c分别是3个对象。同样的,与运算也是一一样的意思:a & b = c.只不过是与的意思和加法的意思不一样而已。根据题目要求,我们已经得到了一个参与运算的数据,就是要转换的数,现在我们需要得到转换后的数,根据与运算规则,我们构造一个数,分别和待转换的数进行与运算,得到每一位的值,要么是0,要么是1。程序如下:#include <stdio.h>intmain(void){const int iTimes=sizeof(int) * 8;int iMask=1;int x = 12345; //这个就是要转换的数int x2[iTimes];int i;
for( i=0 ; i<iTimes ; i++ ){
x2=x & iMask;
iMask = iMask << 1;
//
printf("%d",iMask);}
printf("\\n(%d)d=",x);for( i=iTimes -1 ; i >=0 ; i-- ){
printf("%d",x2 ? 1 : 0 );}
return 0;}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行