已解决
C语言原码、补码、反码以及移位操作
来自网友在路上 174874提问 提问时间:2023-09-24 10:06:16阅读次数: 74
最佳答案 问答题库748位专家为你答疑解惑
原码、补码、反码
- 正数内存中以原码存在,正数原码 = 补码 = 反码
// +5 整型 4 字节
原码 : 0000 0000 0000 0000 0000 0000 0000 0101
补码 : 0000 0000 0000 0000 0000 0000 0000 0101
反码 : 0000 0000 0000 0000 0000 0000 0000 0101
- 负数以补码形式存在;
// -5
原码 :1000 0000 0000 0000 0000 0000 0000 0101
反码 :1111 1111 1111 1111 1111 1111 1111 1010 (反码取反的时候除符号位)
补码 :1111 1111 1111 1111 1111 1111 1111 1011 ff ff ff fb
与或运算
- -5 &10 & 两个都为1才为1
// -5
原码 :1000 0000 0000 0000 0000 0000 0000 0101
反码 :1111 1111 1111 1111 1111 1111 1111 1010
补码 :1111 1111 1111 1111 1111 1111 1111 1011 // 10
原码 :0000 0000 0000 0000 0000 0000 0000 1010
反码 :1111 1111 1111 1111 1111 1111 1111 1010
补码 :1111 1111 1111 1111 1111 1111 1111 1010// -5 & 10
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 1010
-----------------------------------------
0000 0000 0000 0000 0000 0000 0000 1010 // 1010 10即a
- -5 | 10 只要有一个1,就为1
// -5 | 10
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 1010
-----------------------------------------
1111 1111 1111 1111 1111 1111 1111 1011 // ff ff ff fb 11
符号位会按位运算
-5 取反
0000 0000 0000 0000 0000 0000 0000 0100 ~(-5) 等于4
异或
不同得1,相同得0
1001 1100
0101 1010
---------
1100 0110
移位
-
右移 << 左移
右移分逻辑右移 算术右移 左移没有划分
(1)右移
逻辑右移 高位补0 低位溢出0101 1010 >> 3 ----------------0000 1011
算术右移 高位补符号位 低位溢出 (有符号数补1)1010 1101 >> 3--------------1111 01010101 0011 >> 3 无符号来说 补0---------0000 1010
逻辑右移还是算术右移,取决于编译器;
查看全文
99%的人还看了
猜你感兴趣
版权申明
本文"C语言原码、补码、反码以及移位操作":http://eshow365.cn/6-12708-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 一个电子信息工程学生的历程和内心感想
- 下一篇: Linux关于memory cgroup的几个要点