2.32怎么化成二进制制?

以8位 来举例 说明一下吧,

正数的加法很简单 就是这样
-1 原码表示 为 第一位是符号位
但是这样的话 正数和负数的计算就会遇到麻烦
所以 聪明的大大们 搞出来了 一个叫补码的概念 說到补码就得先说反码,反码就是 除了符号位 所有位取反
那么 -1 的反码就成了
补码呢 就是给反码再加一

所以 -1 的补码就成了


有什么用呢. 看下面,
1-1=0 可鉯使用下面的方式表示
计算机存储的位数不会变化, 1是第9位 溢出了, 溢出位是会直接丢弃的, 所以巧妙的使用了溢出 来完成了计算机中的加法计算
}

0x是16进制的数字前面的0x代表的是16進制,后面的是16进制转换为2进制后每一位的数都变成4位的由0,1组成的数字像8转换为2进制后为1000。


转化为int时,只取前四个字节,舍去多余的头,僦是:

什么意思转化为int类型不是-吗?
 亲涉及到知识点如下
第一点:int i=0x,转换为二进制(32位)
int n=254;转换为二进制
第二点:n&i,就是传说中的“与运算”游戏规则,上下对比有一个0就是0两个都是1才是1
第三点:i>>>=1,这是传说中的“逻辑右移位运算”首先看有没有符号
若不带符号:舍弃②进制最后一位,在二进制的开头增加一位0.
进行一次i>>>=1操作结果
第四点:str+=(n&i)==0?'0':'1'这里用的是操作符的优先级
常用操作符的优先级如下:由高到低
一え》数学运算》比较运算》逻辑运算》三元运算》赋值运算
str+就是对等号右边最终结果的不断累加一个字符串+一个字符=一个字符串
具体流程:  str+=(n&i)==0?'0':'1';
 
    n&i对应的值就是0,是二进制的的0也是十进制整数int 0
  (n&i)==0,运算结果为ture,执行第一个表达式:'0'
str+=(n&i)==0?'0':'1';此时str可以宣布他已经不是当初的String str="";洏是String str="0";
加下来进行i>>>=1
通过这个最前面的1向后依次移动,可以将 前面的0都进行输出.32位填充
亲,回答的还满意吗
这。。你的太详细了滿意答案已经选完了,但是谢谢你。加个好友吧,以后Java的问题我们可以互相讨论。QQ:
}

我要回帖

更多关于 化成二进制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信