算法笔记-位运算/进制转换/计算器系列题目

本文探讨了不同进制数的表示,如二进制(0b)、八进制(0)和十六进制(0x)。深入讲解了计算机中数字的表示方式,包括原码和补码的概念,并分析了移位操作的逻辑移位和算术移位。此外,提到了右移一位与除2的区别,特别是在处理负数时的差异。最后,介绍了LeetCode上的405题——数字转换成16进制,以及IP地址转数字和前缀匹配问题,以及两个计算器系列题目,涉及加减乘除和括号运算。
摘要由CSDN通过智能技术生成

不同进制数的表示形式

二进制:0b

八进制:0

十六进制:0x

int a = 0b001;
int b = 07;
int c = 0xa;
cout << a << endl; // 1
cout << b << endl; // 7
cout << c << endl; // 10

计算机中对数字的表示方法

相关概念

  1. 原码:数值绝对值二进制表示+1位符号位(即最高位正数为0,负数为1)

  2. 补码:正数补码=原码;

             负数补码=原码除符号位外的所有位取反后加1
    
+5 -5
原码 0101 1101
补码 0101 1011

注意:0的原码,补码都是0;

      **计算机存储的都是补码**

移位操作

  1. 逻辑移位:移位不考虑符号位,即不论左移还是右移,都补0

  2. 算术移位:移位考虑符号位,即带符号位的移位

                    正数:无论左移还是右移都是补0;
    
                    负数:左移在右边补0,右移需要在左边补1
    

补充:如果要对负数做逻辑移位,可以****int转unsigned int

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值