正负数的原码与补码

一、介绍

负数的原码就是在最左边的符号位置 1 ,其他各位与其绝对值无异。

负数的补码就是其原码的按位取反再加 1 。

//求一个整数(可以为负)的二进制表示中'1'的个数
public int getNumOf1(int n){
    char[] ch = Integer.toBinary(n).toCharArray();
    int sum = 0;
    for(char c : ch){
        if(c=='1')
            sum++;
    }
    return sum;
}

或者

public static int getNumberOfN2(int n){
    int sum = 0;
    while(n!=0){
        sum++;
        n = n&(n-1);
    }
    return sum;
}

或者

public static int getNumberOfN3(int n){
    return Integer.toBinaryString(n).replaceAll("0", "").length();
}

 

转载于:https://www.cnblogs.com/zhengmengen/p/7424216.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值