黑马程序员技术交流社区

标题: 进制转换问题 [打印本页]

作者: 李震    时间: 2012-8-3 17:34
标题: 进制转换问题
  我刚看完了毕老师的进制转换,我发现讲解进制转换时,十进制到二进制转换的过程中会有 int num;  int temp= num &1; num>>>1;说明在转换过程中其实计算机已经把十进制数转换成了二进制,而后又拿其跟1做与运算。明明输进去十进制数后已经被机器识别为了二进制数了,还要在做&,是不是很多余呢?
作者: 杨智    时间: 2012-8-3 19:04
据我所知 计算机保存所有数据都是用0和1表示数据的  即便显示的是10进制格式 其实内部也是2进制表示形式的  
作者: 官文昌    时间: 2012-8-3 21:52
额~~这也行,首先计算机执行是二进制,计算机有自己的机制来把我们输入的数据转换成二进制,我们把这个机制想成一个封闭箱子,就像java的面向对象一样,这个黑盒子怎样转换二进制不需要我们知道,我们只需要结果就可以了,当你num运行时,num来到黑屋子前面,黑屋子来接受num的值,而num并没有进入这个黑屋子,因为它不是二进制的,你不把num转换成二进制你的num在屋子外面进不去你怎么执行啊?当你把num转换成二进制时,它才可以进去屋子去参与运算···不然我们输入任何语句都可以进行以为运算了~~
作者: 侯宪博    时间: 2012-8-4 00:20
楼主,此言差矣
十进制转二进制其实机器已经完成
但是,毕老师是在演示什么
是输出二进制
一个数存储进计算机虽说变成了二进制,但是输出的时候不还是十进制
你想让他输出二进制,就有这个必要了
咱们假设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 21:08
侯宪博 发表于 2012-8-4 00:20
楼主,此言差矣
十进制转二进制其实机器已经完成
但是,毕老师是在演示什么

谢谢 明白了 我本来是在想是不是可以直接把已经被转换的二进制数不通过&运算直接表现出来。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2