资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

二进制相关问题

Java 更新时间: 发布时间: 计算机考试归档 最新发布

二进制相关问题

中英文表示

十进制

decimal

八进制

octal

十六进制

hexadecimal

二进制

binary

数字转换(转化成十进制计算)(ai是从字符串的右边开始计位;R是进制数)

应用举例

365(D) = 5 * 10^0 + 6 * 10^1 + 3 * 10 ^2;

1001(B) = 1 * 2^0 + 1 * 2^3 = 9;

二进制:

正数的原码、反码、补码都相同。

计算机中存储负数的补码。

求二进制

计算方法是数字转化的逆思路

比如求11的二进制,依次求2取余,反过来输出

11/2----1

5/2-----1

2/2-----0

1/2-----1

11的二进制编码为1011。

1011(B)= 1*2^0 + 1* 2^1 + 0 + 1*2^3 = 11;

-11的二进制的原码是将1101前面补齐(一共32位)

11的二进制00000000 00000000 00000000 00001101(第一位为符号位,0表示正,1表示负数)

-11的原码:10000000 00000000 00000000 00001101

反码(将-11的原码取反,符号位不变,后面全部取反):11111111 111111111 1111111 11110100

补码(反码加一,计算机中-11二进制存储的是其补码)11111111 111111111 1111111 11110101

Java中得到二进制的几种方法

// 二进制的表示方法				int a = 9;// Integer.toBinaryString(a)		System.out.println(Integer.toBinaryString(a));// Integer.toString(a, 2)    注意这个只能用于正数。第二个参数为目标进制		System.out.println(Integer.toString(a, 2));// Integer.parseInt(a, 2)    将字符串a,当前是二进制;转化结果为int类型十进制数字(适用于正数)// BigInteger m = new BigInteger(a,2);   将字符串a用大数处理,a为2进制,默认输出十进制

 二进制的相关应用

1、判断奇偶数

2、判断一个数是否为2的次方

// 判断一个奇偶数// 奇数-二进制的最后一位一定为1// 偶数-二进制的最后一位一定为0public static boolean check(int m){return (m&1)==1;}//判断m是否为2的x次方//若m为2的x次方:m的二进制只有最高位为1,其余全为0,(m-1)的二进制除最高位都为1public static boolean check(int m){return m&(m-1)==0;}

 统计二进制中1的个数(三种方法)

特别的要说明思路3,通过移位判断末位是不是1。

import java.util.Scanner;public class 二进制中1的个数 {	public static void main(String[] args) {		Scanner sc= new Scanner(System.in);		int n = sc.nextInt();		// 1、 直接使用integer类的方法bitCount();		System.out.println(Integer.bitCount(n));		// 2、使用字符串二进制转化,读取字符1		String string = 		Integer.toBinaryString(n);		int count = 0;		for(int i=0;i>i)&1) == 1) count++;		}		System.out.println(count);	}}

 天空数?

小赵对进制特别感兴趣,不光研究2进制,3进制, 4进制, 5进制.....
    突然有一次,他发现了一个特殊的数2992,这个数,它的十进制数表示,四位数字之和为
    2+9+9+2=22,它的十六进制数BB0,
    四位数字之和也为22,
    同时它的十二进制数表示1894,
    四位数字之和也为22,
    啊哈,真是巧啊。之后他就去翻书,发现这种数叫天空数。
    但是要判断这样的数还是有点麻烦啊,
    那么现在请你帮忙来判断任何一个十进制的四位数,不是Sky数吧。

import java.util.Scanner;public class sky数 {	//若n为Sky数,则输出“# is a Sky Number.",否则输出“#n is not a Sky Number."。每个结果占-行。注意: #n表示所读入的n值。		public static void main(String[] args) {		int a = 0;		Scanner sc = new Scanner(System.in);		while(sc.hasNext()) {			a = sc.nextInt();			if(getRsum(a,10) == getRsum(a,16) && getRsum(a,10) == getRsum(a,12)) {			System.out.println(a+ " is a Sky Number.");			}else {				System.out.println(a+ " is not a Sky Number.");			}		}	}	public static int getRsum(int n,int r) {		int sum = 0;		while(n>0) {			sum += n%r;			n = n/r;		}		return sum;	}}

集合的子集输出

public class 集合的子集输出 {	public static void main(String[] args) {		int[] a  = {1,2,3,4};    // 元素个数计为n		for(int i = 0;i<=15;i++) { // 这里i循环次数是子集个数为2^n = 16			int n = i;			int index = 0;			System.out.print("{");			while(n>0) {					if(n%2 == 1) {						if(n>2) System.out.print(a[index]+",");						else							System.out.print(a[index]);											}					index++;					n=n/2;			}			System.out.println("}");		}	}}

棋盘放麦子

你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 1 个棋盘格放 1 粒麦子,在第 2个棋盘格放 2粒麦子,在第 3个棋盘格放 4 粒麦子,在第 4 个棋盘格放 8粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有 64格)。

国王以为他只是想要一袋麦子而已,哈哈大笑。

当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!

请你借助计算机准确地计算,到底需要多少粒麦子。

import java.math.BigInteger;public class 棋盘放麦子 {	public static void main(String[] args) {		// 暴力		// 利用等比数列进行求和				// 方法1: 初始化和sum,变量a是每一项		BigInteger sum = BigInteger.ONE; 		BigInteger a = BigInteger.valueOf(1L);		for(int i=0;i<63;i++) {			a = a.multiply(BigInteger.valueOf(2L));			sum = sum.add(a);		}		System.out.println(sum);				// 方法2 利用二进制的方式		StringBuffer s = new StringBuffer("");		for(int i=0;i<64;i++) {  // 64位1。			s = s.append("1");		}		System.out.println(new BigInteger(s.toString(),2)); // 参数类型分别是string和int。	}}
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1095590.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【二进制相关问题】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2