首页
学习
活动
专区
圈层
工具
发布

十进制与二进制转换(负数+正数)

一、十进制正数的二进制转换 1、9利用“除2取余法,余数逆序排列”,得到原码。 2、则9的二进制数为 0000 1001。...二、十进制负数的二进制转换 1、先将9利用“除2取余法,余数逆序排列”,得到原码。 2、将上一步骤得到的原码取反(1取0,0取1,数个数字除外,一直为1),得到反码。...4、十进制负数转二进制方法总结如下: 除2取余,逆序排列 。 01互换,原码取反码 。 反码+1,得补码。 三、逆向操作将二进制的负数转为十进制 1、将二进制数减1,得到:11101100。...总结: 1、二进制转十进制跟十进制转二进制互为逆操作; 2、二进制由于只有0和1,没有符号,其实首位即代表其符号; 四、算法题 1、HJ15 求int型正整数在内存中存储时1的个数 描述 输入一个

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    int类型的取值范围(为什么负数比正数表示的范围多一位)

    前言: 还记得那个刚刚学习C语言,老师给我们讲课的时候,我就稍微了解一下为什么int类型的数据,负数可以表示到-2³¹,而正数只能表示到2³¹-1。...有符号类型的表示形式: ●有符号的类型,用第一位来表示符号位,1代表负数,0代表正数,其他31位就是用,表示数值,比特位只能放1和0。...正数的原码、反码、补码都相同。 负数从原码到反码是符号位不变,其他的取反,这里的取反就是,0变成1,1变成0,因为二进制里面只有0和1....负数从反码到补码:直接+1 -1的原码:1000 0000 | 0000 0000 | 0000 0000 | 0000 0001 -1的反码:1111 1111 | 1111 1111...答案是不可以的,因为如果转为正数,放到int里面,int类型是存不下的,int只能存2³¹-1。所以要这么做的话,我们是能把它存到long 类型,或者long long类型。

    2.6K00

    「硬核JS」数字之美

    我们可能注意到了,这样好像没办法表达负数 So,为了表示正与负,先辈们就发明了 「原码」,把左边第一位腾出来,存放符号,正数用 0 来表示,负用 1 来表示 上图就是正负数的 原码,你可能在疑惑为什么上面表里我只画到了数字...其实,已知补码求原码的操作就是对这个补码再求补码 如果补码的符号位为 0,表示是一个正数,那么它的原码就是它的补码 如果补码的符号位为 1,表示是一个负数,那就直接对这个补码再求一遍它的的补码就是它的原码...使用补码,我们可以很方便的将减法运算转化成加法运算,运算过程得到简化,正数的补码即是它所表示的数的真值,而负数的补码的数值部份却不是它所表示的数的真值,采用补码进行运算,所得结果仍为补码 与原码、反码不同...中数字范围 如果大家真的理解了上文,那么就会发现数字的范围其实有两个概念,最大正数和最小负数,最小正数和最大负数 而最终的数字范围即 最小负数~最大负数 并上 最小正数~最大正数 从S、E、M即数符、阶码...() 来验证 最后 开发过程中不乏有找过安全范围的计算,这个时候我们就得要转为字符串计算了,当然不想自己转也可以使用开源库来计算,如 bignumber.js[2] 、Math.js[3] 等等 感谢大家的阅读

    7.3K20
    领券