java的数字二进制输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的数字二进制输出相关的知识,希望对你有一定的参考价值。

首先,java里int是有32位2进制数组成的
我们一般赋值
int
i
=
1;
这个是赋值10进制的数
赋值
2进制要
int
i
=
01;(前面加个0,就表示是2进制数)
赋值16进制(常用)
int
i
=
0x00000001;
(0x表示为16进制数)
3种的值都是1.
要用2进制输出就是Integer.toBinaryString(i)
拓展:
因为计算机处理位运算速度是非常快的(应该是最快的运算)
所以很多时候,如果有一堆boolean变量需要表示时,
一般只用1个int的数表示,如:
int
i
=
0x0000000f;//表示后4位为1
int
m
=
(i
>>
2)
&
1;
//
其中m就是表示某一位的值,2表示右边开始数第2位(当然是从第0位开始算的)
这样就能取具体每一位的值
这种方法在很吃代码效率的程序中经常遇到
全手打,望支持
参考技术A 定义十进制的数直接写,定义8进制的数以0开头,定义二进制的数以0b开头,定义十六进制的数以0x开头
需要将十进制的数以二进制的数表示出来可以参照下例:
int
a
=
10;
System.out.println(Integer.toBinaryString(a));
转换成八进制把Binary换成Octal
转换成十六进制把Binary换成Hex
解释:Binary是二进制的意思,Octal是八进制的意思,Hex是十六进制的意思。
参考技术B byte
a
=
1111;
//
这样定义,这个
1111
到底是二进制,还是10进制,还是
x
进制,系统是不知道的。。
在这里,1111
默认被当作
10
进制。。
java
不支持显式输入二进制,默认为
10
进制,0
开头为8进制,比如
01111,0x开头为16
进制,比如
0x11。。
byte
数据类型所表示的范围为 -128~127,已经超出范围了。。本回答被提问者采纳
参考技术C 要是我肯定先尝试一下,二进制以B开头,那就b代表下看咯,不行再去查。
事实也证明是不行的,查了一下,还真没有二进制的输出形式。
Integer
类倒是有相应的方法:
static
StringtoBinaryString(int
i)
以二进制(基数
2)无符号整数形式返回一个整数参数的字符串表示形式。
System.out.print(Integer.toBinaryString(x));

476-数字的补数

476-数字的补数

给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。

注意:

  1. 给定的整数保证在32位带符号整数的范围内。
  2. 你可以假定二进制数不包含前导零位。

示例 1:

输入: 5
输出: 2
解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。

示例 2:

输入: 1
输出: 0
解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-complement
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    public int findComplement(int num) {
        int cnt = 0;
        int res = 0;
        while (num > 0) {
            if(num % 2 == 0) {
                res += Math.pow(2, cnt);
            }
            num = num >> 1;
            cnt++;
        }
        return res;
    }

以上是关于java的数字二进制输出的主要内容,如果未能解决你的问题,请参考以下文章

力扣(LeetCode)476. 数字的补数

华为机试-求最大连续bit数

java程序在控制台输入一个正整数,要求以二进制的形式输出

字符串转换为数字Java

字符串转换为数字Java

java中如何实现由第一行输入行数,剩下几行输入数据(每行一个)