补码公式
二进制补码运算公式:
-x = ~x + 1 = ~(x-1)
~x = -x-1
-(~x) = x+1
~(-x) = x-1
x+y = x - ~y - 1 = (x ¦y)+(x&y)
x-y = x + ~y + 1 = (x ¦~y)-(~x|y)
x^y = (x ¦y)-(x&y)
x ¦y = (x&~y)+y
x&y = (~x ¦y)-~x
x==y: ~(x-y ¦y-x)
x!=y: x-y ¦y-x
x < y: (x-y)^((x^y)&((x-y)^x))
x <=y: (x ¦~y)&((x^y) ¦~(y-x))
x < y: (~x&y) ¦((~x ¦y)&(x-y))//无符号x,y比较
x <=y: (~x ¦y)&((x^y) ¦~(y-x))//无符号x,y比较
应用举例
(1) 判断int型变量a是奇数还是偶数
a&1 = 0 偶数
a&1 = 1 奇数
(2) 取int型变量a的第k位 (k=0,1,2……sizeof(int)),即a>>k&1
(3) 将int型变量a的第k位清0,即a=a&~(1 < <k)
(4) 将int型变量a的第k位置1, 即a=a ¦(1 < <k)
(5) int型变量循环左移k次,即a=a < <k ¦a>>16-k (设sizeof(int)=16)
(6) int型变量a循环右移k次,即a=a>>k ¦a < <16-k (设sizeof(int)=16)
(7)整数的平均值
对于两个整数x,y,如果用 (x+y)/2 求平均值,会产生溢出,因为 x+y 可能会大于INT_MAX,但是我们知道它们的平均值是肯定不会溢出的,我们用如下算法:
int average(int x
- 05-14
娱乐朴叙俊演的双男主
- 07-24
综合四王八公实力排名
- 04-21
美食金汤小黄鱼做法
- 05-02
综合穷得一文不名了还装的代表人物
- 12-09
宠物香蕉猫表情包怎么获得
- 05-31
教育荆州的大学有那几个啊
- 03-15
综合靖江杨******置房2023年交付
- 02-13
综合用风筝比喻人的一句话
推荐
- 1济宁到北京有地铁吗133
- 2王者啥时候出螳螂384
- 3N95口罩一般能使用多久316
- 4平凡的世界孙少平和惠英在一起吗243
- 5迪丽热巴对萨顶顶的评价325
- 6钢琴调律考证难不难 怎么考179
- 7夏蒙 诗乐 精工 谁的钛眼镜架最好207
- 8写山村的古诗词456
宠物
- 1贵宾狗怕冷吗 穿上御寒的衣物233
- 2狗狗咳嗽吃什么 咳嗽严重需要看兽医375
- 3狗把小孩子咬了怎么办262
- 4小狗翻肠子 给小狗打疫苗就能避免翻肠子176
- 5狗狗有眼屎不吃东西怎么回事259
- 6哈士奇有狼的血统吗416
- 7怎么养小松鼠 先准备一个良好的生活环境381
- 8小鳄鱼怎么养 鳄鱼需要在水面上进食否则会溺水217