Q : 什么是原码,反码,补码?
A : 原码 符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值
反码 正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
补码 正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
Eg :如果是8位二进制:
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
了解更多:https://blog.csdn.net/zl10086111/article/details/80907428
Q :#define lowbit(x) ((x)&(-x)) 这样定义的lowbit是什么意思呢?
A :二进制按位与运算,返回不大于x的2的最大次方因子
Eg: x=1~10 lowbit 1 2 1 4 1 2 1 8 1 2
了解更多 : https://www.cnblogs.com/chenzhiyin/p/5292798.html
Q :关于inline......(慎用)
A :在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。
原理:调用其函数的原处直接换为函数内的语句,增大码量,但避免了频繁调用函数对栈内存重复开辟所带来的消耗。
值得注意:inline只适合涵数体内代码简单的涵数使用,不能包含复杂的结构控制语句例如while、switch,自我递归调用。
了解更多 : https://www.cnblogs.com/fnlingnzb-learner/p/6423917.html
https://www.runoob.com/w3cnote/cpp-inline-usage.html