不明白的方法!??

java131313 2011-03-07 12:23:50
static void OutBitInt(String str,int i){
System.out.print(str+",int: "+i+" ,binary:");
System.out.print(" ");
for(int j=31;j>=0;j--) {
if(((1<<J)&I)!=0) System.out.println(); System.out.print(?0?); else System.out.print(?1?); }
上面的方法怎么就能转二进制显示了呀?
...全文
59 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
java131313 2011-03-07
  • 打赏
  • 举报
回复
只知道循环32次。 为什么这样写我不清楚呀。能帮我分析一下呀??
java131313 2011-03-07
  • 打赏
  • 举报
回复
31两制是11111向移一位是111110再与i 若i是2 (10) 得10就输出1
第二步。。。。。怎么分析呀?
runer 2011-03-07
  • 打赏
  • 举报
回复
关键是这一步移位与操作
if(((1<<J)&I)!=0)

先移位,后与
wsxiapiaoxue 2011-03-07
  • 打赏
  • 举报
回复
建议你回去再看几遍这几个运算符:<<,&
java131313 2011-03-07
  • 打赏
  • 举报
回复
噢关键是1<<j 这个没理解 把1左移j位呀
dreamhunter_lan 2011-03-07
  • 打赏
  • 举报
回复
好吧,java的int是32位的,1<<j就是把1左移j位,1就变为10000...(j个0)
(1<<j)&i就能知道i第j位(从0开始数)是不是0
如果i = 3, i的二进制表示就是00000000 00000000 00000000 00000011
(1<<31)&i就是
00000000 00000000 00000000 00000011
&10000000 00000000 00000000 00000000
结果是0,所以i的最左边就是0
(1<<30)&i就是
00000000 00000000 00000000 00000011
&01000000 00000000 00000000 00000000
结果还是0,输出0
...
(1<<1)&i
00000000 00000000 00000000 00000011
&00000000 00000000 00000000 00000010
结果是1

(1<<0)&i
00000000 00000000 00000000 00000011
&00000000 00000000 00000000 00000001
结果是1
所以i的二进制输出是
00000000 00000000 00000000 00000011

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧