当前位置:首页 » 操作系统 » java二进制算法

java二进制算法

发布时间: 2022-09-22 10:47:57

❶ 二进制相加 怎么用java实现

两个数相加,会得到一个结果,和一个进位的结果,
然后将这个进位的结果后面加0补位,然后再和这个结果相加。如此递归,知道进位全部是0为
public class $ {
public static void main(String[] args) {

String s0 = "100";// 十进制4

StringBuffer result = new StringBuffer();
StringBuffer jinwei = new StringBuffer();

System.out.println(test(result, jinwei, ));
}

private static String test(StringBuffer result, StringBuffer jinwei, String s0, String {

// 没有进位了就退出
if (s0.length() > 0 && s0.indexOf("1") < 0) {
return s1;
}
//位数补齐
int len0 = s0.length();
int len1 = s1.length();

int minLen = Math.max(len0, len1);

s0 = buqi(len0, minLen) + s0;
s1 = buqi(len1, minLen) + s1;

for (int i = s0.length() - 1; i >= 0; i--) {
String str0 = s0.substring(i, i + 1);
String str1 = s1.substring(i, i + 1);
add(result, jinwei, str0, str1);
}

String tmpJinwei = jinwei.reverse().toString() + "0";
jinwei.delete(0, jinwei.length());

String tmpResult = result.reverse().toString();
result.delete(0, result.length());

return test(result, jinwei, tmpJinwei, tmpResult);
}

private static void add(StringBuffer result, StringBuffer jinwei, String str0, String str1) {

// 00相加为0,不进位
if ("0".equals(str0) && "0".equals(str1)) {
result.append("0");
jinwei.append("0");
return;
}

// 11相加为0,进位1
if ("1".equals(str0) && "1".equals(str1)) {
result.append("0");
jinwei.append("1");
return;
}

// 其他情况,相加为1,不进位
result.append("1");
jinwei.append("0");
}

private static String buqi(int len0, int minLen) {
String tmp = "";
for (int i = len0; i < minLen; i++) {
tmp += "0";
}
return tmp;
}
}

❷ java中二进制怎么表示

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
1、Java中定义两个数,然后分别打印出它们的二进制表示:
System.out.println("Java二进制7: "+Integer.toBinaryString(7));
System.out.println("Java二进制-7: "+Integer.toBinaryString(-7));
输出:
Java二进制7:
111
Java二进制-7:

可以看到Java中对于数的表示属于有符号的,那么这个是怎么来的?
7好办,直接是111
-7转化二进制的过程:
(1)把-7转化成7,二进制是
111
(2)Java中对于不满32位的int二进制自动补齐,所以变成了
(29个0)111
(3)然后取反
(29个1)000
(4)然后加1
(29个1)001
这就是-7的整个转化过程,那么现在有一个问题,如果有一个文本文件,每一行有八位二进制,表示的范围是(0~255),也就是用一个字节表示的无符号整数,如果现在要把这些二进制转化成整数存到文件里应该怎么做?
文件:
line1

11111110

(254)
line2

00000000

(0)
假设用Java读进了第一行,那么直接打印出来的值是-2,不符合要求,这时让-2变254有两种办法:
(1)用Java自带的方法,Byte.toUnsignedInt((byte)
-2)(ps.-2的二进制表示就是line1),这样打印出来的就是254了
System.out.println(Byte.toUnsignedInt((byte) -2));
输出:254
第二种方法的原理:
Java中-2的二进制表示:(这个二进制的后八位就是line1,可以直接打印的话Java把其当做了负数
-2)
Java中255的二进制表示:(24个‘0’,8个‘1’)
做与后变为:
这样做与后表示的数就是正数了
254。可以想一下,假设每一行用2个字节表示一个无符号数,那么可以把每一行变成正整数用方法2怎么做?
2.Java中的>>和>>>
'>>'
算术右移,向右移左边补符号位
'>>>'
逻辑右移,向右移左边补0
System.out.println("Java二进制-7: "+Integer.toBinaryString(-7));
System.out.println("-7>>2: "+Integer.toBinaryString(-7>>2));
System.out.println("-7>>>2: "+Integer.toBinaryString(-7>>>2));输出:
Java二进制-7:
-7>>2:
-7>>>2: //正常应该这样(00)左边的两个0不显示

❸ java的数字二进制输出

要是我肯定先尝试一下,二进制以B开头,那就b代表下看咯,不行再去查。
事实也证明是不行的,查了一下,还真没有二进制的输出形式。
Integer 类倒是有相应的方法:
static StringtoBinaryString(int i)
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
System.out.print(Integer.toBinaryString(x));

❹ 跪求“java中二进制怎么表示”

java中二进制的表示:

1、Java中定义两个数,然后分别打印出它们的二进制表示(例如7和-7):

System.out.println("Java二进制7:"+Integer.toBinaryString(7));

System.out.println("Java二进制-7:"+Integer.toBinaryString(-7));

输出:

Java二进制7: 111

Java二进制-7:

7的二进制就是111

-7转化二进制的过程:

(1)把-7转化成7,二进制是 111

(2)Java中对于不满32位的int二进制自动补齐,所以变成了 (29个0)111

(3)然后取反 (29个1)000

(4)然后加1 (29个1)001

(4)java二进制算法扩展阅读:

c语言中二进制的转换:

用函数转换itoa(值,数组名,进制)

#include<stdio.h>

#include<stdlib.h>

voidmain()

{

char str[8];

inti=8;

itoa(i,str,2);

printf("%s",str);

}

❺ 如何用JAVA语言将十六进制数转换成二进制数,并输出

我的思路很简单:

publicclass六转2
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========16转二进制========== ");
init();
}//初始化!
privatestaticvoidinit()
{
//字符串形式的:16进制!
Strings="ACCC";
//字符串形式十进制--作为桥梁!
intsint=Integer.valueOf(s,16);
//十进制在转换成二进制的字符串形式输出!
Stringbin=Integer.toBinaryString(sint);
//输出!
System.out.println(bin);
}
}

❻ 求java十进制转二进制代码

很高兴回答你的问题
希望对你有帮助
Java实现十进制转换二进制的一段代码0

1.复制代码package work;
2.import java.util.*;
3.public class jin{
4.public static void main(String[]args){
5.Scanner input=new Scanner(System.in);
6.int num; //声明一个num变量用来存贮获取键盘输入的数值
7.int[] tnum=new int[10]; //声明一个数组,用来存贮二进制的每一位数字

8.System.out.print(\"请输入一个100以内的整数:\");
9.num=input.nextInt(); //从键盘获取数值
..
.. /*循环,用来检测输入的数值是否大于100*/
while(num>100){
System.out.print(\"数字不能大于100!重新输入:\");
num=input.nextInt();
}
/*循环结束*/

int n=num; //声明n变量用并赋值输入的值
int x=0; //声明x变量,用来控制数组

/*循环,用来计算十进制转换为二进制数后的每一位*/
while(n>=1){
tnum[x]=n%2; //将结果逐一存贮在数组内
n=n/2;
x++;
}
/*循环结束*/
System.out.print(num+\"转换成二进制是:\");
x--; //这里x变量需要“--”才能与数组标签匹配

/*for循环控制数组序列反转输出,从后往前*/
for(int i=x;i>=0;i--){
System.out.print(tnum[i]);
}
/*循环结束*/
}
}

❼ java中如何将十进制数字转化成二进制

如果表达小于2^31-1的正数代码如下:

public void binaryToDecimal(int n){

int t = 0; //用来记录位数

int bin = 0; //用来记录最后的二进制数

int r = 0; //用来存储余数

while(n != 0){

r = n % 2;

n = n / 2;

bin += r * Math().pow(10,t);

t++;

}

System.out.println(bin);

}

使用字符串的拼接(+)来实现大于2^31-1的数,代码如下:

public void binaryToDecimal(int n){

String str = "";

while(n!=0){

str = n%2+str;

n = n/2;

}

System.out.println(str);

}

可以右移后再与0x01进行&运算得到第一位的数字判断判断它的第几位上是0,第几位上是1,代码如下:

class ByteMove

{

public static void main(String[] args)

{

int i = 7;

move(i);

}

static void move(int num){

for(int i= 0;i<6;i++){

System.out.println("第"+(i+1)+"位:" + (num >> i & 0x01));

}

}

}

❽ java中十六进制怎么转换为2进制

java十六进制转换为2进制示例如下:

publicclassHex2Binary
{
publicstaticvoidmain(String[]args)
{
StringhexString="ABCD";
System.out.println(hexString2binaryString(hexString));
}

(StringhexString)
{
if(hexString==null||hexString.length()%2!=0)
returnnull;
StringbString="",tmp;
for(inti=0;i<hexString.length();i++)
{
tmp="0000"
+Integer.toBinaryString(Integer.parseInt(hexString
.substring(i,i+1),16));
bString+=tmp.substring(tmp.length()-4);
}
returnbString;
}
}

❾ 急,急急,跪求java十六进制转换成二进制(要自己写算法),再把得到的二进制数取反后,在转换成十六进制

Java程序:

public class Test29 {
public static void main(String[] args) {
String hex = "12345abcdef67890";
String bin;
bin = Transform.convertHexToBin(hex);
System.out.println(hex + " --> " + bin);

hex = Transform.convertBinToHex(bin);
System.out.println(bin + " --> " + hex);
}
}

class Transform{
private static String[] hexs = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f"};
private static String[] bins = new String[]{"0000", "0001", "0010", "0011", "0100", "0101",
"0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};

//将十进制数hex转换为二进制数并返回
public static String convertHexToBin(String hex){
StringBuffer buff = new StringBuffer();
int i;
for(i=0; i<hex.length(); i++){
buff.append(getBin(hex.substring(i,i+1)));
}
return buff.toString();
}

//将二进制数bin转换为十六进制数并返回
public static String convertBinToHex(String bin){
StringBuffer buff = new StringBuffer(bin);
int i;
if(bin.length()%4 != 0){//左补零
for(i=0; i<(4-bin.length()%4); i++){
buff.insert(0, "0");
}
}
bin = buff.toString();
buff = new StringBuffer();

for(i=0; i<bin.length(); i+=4){
buff.append(getHex(bin.substring(i,i+4)));
}
return buff.toString();
}

//返回十六进制数的二进制形式
private static String getBin(String hex){
int i;
for(i=0; i<hexs.length && !hex.toLowerCase().equals(hexs[i]); i++);
return bins[i];
}

//返回二进制数的十六进制形式
private static String getHex(String bin){
int i;
for(i=0; i<bins.length && !bin.equals(bins[i]); i++);
return hexs[i];
}
}

运行测试:
12345abcdef67890 -->
--> 12345abcdef67890

❿ Java:关于java的二进制与运算,下面的过程是怎么实现的呢

你是想判断每一位是否是1对吧,其实你可以把&某种程度看成乘法(两个二进制数对应的位相乘,都是1则为1,有一个为0就是0),如果你想判断一个数的二进制哪个位置上是否是1,那么你就选定那个位置为1的那个数和这个数&连接,如
你想判断14第二位是否是1,只需用14和这10(3)这个二进制用&连接看是否等于0,想看第三位是否是1,就用14和100这个二进制数用&连接看结果是否是0

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:336
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:944
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:741
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:372