如何用程序自动打印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对应的二进制代码即可,具体计算方法见上。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机不能播放视频乱码了怎么办 被加密的视频无法观看怎么办 苹果5忘记id密码怎么办 七个月宝宝脾胃不好怎么办 八个月宝宝脾虚怎么办 七个月宝宝脾胃虚怎么办 海岛奇兵点错了怎么办 螳螂的脚断了怎么办 海岛奇兵打不过玩家怎么办 海岛奇兵资源满了怎么办 海岛奇兵杯越来越多打不玩家怎么办 海岛奇兵控杯技巧 杯数太高怎么办 海岛奇兵发现求救信号怎么办 海岛奇兵被打了怎么办 小鱼翅卡喉咙了怎么办 鱼翅卡在喉咙里怎么办 斗鱼身份证被使用怎么办 做的鱼丸太腥了怎么办 做鱼丸太稀了怎么办 斗鱼手机号换了怎么办 斗鱼直播掉帧怎么办 手机一直卡顿点不动怎么办呢 斗鱼直播分值底怎么办 斗鱼6000鱼丸怎么办卡 斗鱼直播没人看怎么办 淘宝直播间没人气怎么办 挂水了还是有热度怎么办 陌陌工会不结算工资怎么办 滴滴给了差评怎么办 饿了么星级低怎么办 滴滴乘客给低星怎么办 蘑菇街自动收货前还没到怎么办 小主播人气太少别人看不到怎么办 税收分类编码不可用怎么办 斗鱼鱼翅充错了怎么办 苹果指纹摔坏了怎么办 小米5指纹坏了怎么办 苹果5s指纹失灵怎么办 学生赌博输了3万怎么办 电脑录屏没有声音怎么办 别人说你没有他美怎么办