如何用程序自动打印Int类型十进制负数的二进制码?
来源:互联网 发布:linux内核源代码 编辑:程序博客网 时间:2024/06/05 03:59
首先,通过数学原理,我们可以轻易用程序打印正数的二进制码,方法比较简单,举例如下:
方法一:for循环
public static void toBinary(int a ){
int b = 0;//定义余数赋值为0
String result = "";
for(;;){
b = a % 2;//求余
result = b + result;
a /= 2;
if(a == 0){
System.out.println(result);
break;
}
}
}
方法2:递归
public static void toBinary(int a){
if(a == 0){
return;
}else{
toBinary(a/2);
System.out.print(a%2);
}
}
其次,我们也可以打印一个Int类型的正数取反后的二进制代码,方法如下:
int a ;
int i = 0;
String result = "";
int b = 0;
for(;;){
b = a % 2;
b = b == 0 ? 1 : 0;//取反
result = b + result;//按次排列
i++;
a /= 2;
if(a == 0){
break;
}
}
int j;
for(j=0;j<(32-i);j++){ //高位补全,正数时补0,负数时补1
result = "0" + result;
System.out.println(result);
}
然后,重点来了!我们可以通过 正数的取反来求负数的二进制码打印。原理如下:
负数的二进制码 = 相应正数的二进制反码 + 1
可得负数的二进制码 - 1 = 相应正数的二进制反码
假如负数是-A,相应的二进制码是 erjinzhi(-A),对应正数是A,相应的二进制反码是~A,则 erjinzhi(-A) - 1 = ~A
又因一个数的二进制码 - 1 跟这个数先-1 再求二进制码效果是相同的,即erjinzhi(-A) - 1 = erjinzhi(-A - 1)= erjinzhi(-(A+1))
可得erjinzhi(-(A+1))= ~A
即:erjinzhi(-A) = ~(A-1)或erjinzhi(A) = ~(-A-1)
例如,要求-34的二进制代码,只要算出~33对应的二进制代码即可,具体计算方法见上。
- 如何用程序自动打印Int类型十进制负数的二进制码?
- 打印可执行程序二进制码
- 如何用程序更改ACL条目的类型
- 负数如何用二进制表示
- 如何用外挂实现程序自动登录
- 如何用int 3
- 一个负数如何用二进制表示?
- 以C程序角度探究计算机里int 类型的存储与最大数最小数,为什么负数补码存储
- 如何用cmd关闭打开的程序
- 负数的十进制转二进制
- 如何用代码打印网页!
- 如何用IE打印网页
- 如何用c打印进度条
- 如何用c打印出一颗心
- 数值类型自动提升的例子&hashcode为负数
- 链路层的编码研究(1)二进制码的打印
- 如何用JSP处理Oracle中CLOB类型的字段
- 如何用JSP处理Oracle中CLOB类型的字段
- tomcat单机多实例部署
- 天声人語 20160324 春を切り裂くテロ
- hbuilder git 新建共享项目
- HDOJ 2206 IP的计算(正则表达式的应用)
- didFinishLaunchingWithOptions参数launchOptions内容
- 如何用程序自动打印Int类型十进制负数的二进制码?
- 顶部navigationbar设置为透明
- SharePoint2010 IT Professional - 版本查询
- Dungeon Master(bfs)
- 日经春秋 20160324
- JAVA程序元素在内存中的分配
- 括号匹配问题
- ListView 的单选模式
- C语言单向链表的建立