A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李震 初级黑马   /  2012-8-3 17:34  /  1522 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  我刚看完了毕老师的进制转换,我发现讲解进制转换时,十进制到二进制转换的过程中会有 int num;  int temp= num &1; num>>>1;说明在转换过程中其实计算机已经把十进制数转换成了二进制,而后又拿其跟1做与运算。明明输进去十进制数后已经被机器识别为了二进制数了,还要在做&,是不是很多余呢?

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1 继续加油!

查看全部评分

4 个回复

倒序浏览
据我所知 计算机保存所有数据都是用0和1表示数据的  即便显示的是10进制格式 其实内部也是2进制表示形式的  
回复 使用道具 举报
额~~这也行,首先计算机执行是二进制,计算机有自己的机制来把我们输入的数据转换成二进制,我们把这个机制想成一个封闭箱子,就像java的面向对象一样,这个黑盒子怎样转换二进制不需要我们知道,我们只需要结果就可以了,当你num运行时,num来到黑屋子前面,黑屋子来接受num的值,而num并没有进入这个黑屋子,因为它不是二进制的,你不把num转换成二进制你的num在屋子外面进不去你怎么执行啊?当你把num转换成二进制时,它才可以进去屋子去参与运算···不然我们输入任何语句都可以进行以为运算了~~
回复 使用道具 举报
楼主,此言差矣
十进制转二进制其实机器已经完成
但是,毕老师是在演示什么
是输出二进制
一个数存储进计算机虽说变成了二进制,但是输出的时候不还是十进制
你想让他输出二进制,就有这个必要了
咱们假设num是6
二进制显然是110
在内存中显然是
  0000-0000 0000-0000 0000-0000 0000-0110
& 0000-0000 0000-0000 0000-0000 0000-0001
与1运算加左移1位
会把每一个二进制位都挨个取出来
这就致使6在内存中以二进制的形式取出了每一位
也就是说6的二进制在内存中是存在
但是咱们没法切切实实获取到他的二进制
十进制转二进制这个方法其实不是在转换二进制
而是把某个数的二进制形式获取出来。
希望对你有所帮助。。。
回复 使用道具 举报
侯宪博 发表于 2012-8-4 00:20
楼主,此言差矣
十进制转二进制其实机器已经完成
但是,毕老师是在演示什么

谢谢 明白了 我本来是在想是不是可以直接把已经被转换的二进制数不通过&运算直接表现出来。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马