21.补码【郝斌C语言入门学习】
1.补码
原码:
也叫符号绝对值码,最高位0表示正,1表示负,其余二进制位是该数字的绝对值的二进制位
原码简单易懂,加减运算复杂,存在加减乘除四种运算,增加了cpu的复杂度,零的表示不唯一
反码:反码运算不变,也没有在计算机中应用
移码:移码表示数值平移n位,n称为移码量
补码:数据在计算机中是以二进制补码的形式存储的。
已知十进制求二进制
求正整数的二进制:除2取余,直至商为零,余数倒序排列
求负整数的二进制:先求该负整数相对应的正整数的二进制代码,然后将所有位取反,末尾加1,不够位数时,左边补1。
例题1:
1 # include <stdio.h> 2 int main(void) 3 { 4 int i = -3; 5 printf("%#X", i); 6 return 0; 7 } 8 /* 9 在vc++6.0中的输出结果:0XFFFFFFFD 10 */
求零的二进制:全是零
已知二进制求十进制
如果首位是0,则表明是正整数。
如果首位是1,则表明是负整数。将所有位取反,末尾加1,所得数字就是该负数的绝对值。
例题2:
1 # include <stdio.h> 2 int main(void) 3 { 4 int i = 0xFFFFFFEF; 5 printf("%d\n", i); 6 return 0; 7 } 8 /* 9 在vc++6.0中的输出结果:-17 10 */
例题3:
1 # include <stdio.h> 2 int main(void) 3 { 4 int i = 0xFFFFFFCA; 5 printf("%d\n", i); 6 return 0; 7 } 8 /* 9 在vc++6.0中的输出结果:-54 10 */
如果全是0,则对应的十进制是0
(1)int类型的变量所能存储的数字的范围
int类型变量所能存储的最大正数用十六进制表示:0X7FFFFFFF
int类型变量所能存储的绝对值最大的负整数用十六进制表示:0X80000000

(2)绝对值最小负数的二进制代码是多少
1 # include <stdio.h> 2 int main(void) 3 { 4 //8位二进制代码1000 0000 5 char ch = 0x80; 6 printf("%d", ch); 7 return 0; 8 } 9 /* 10 在vc++6.0中的输出结果:-128 11 */
(3)最大正数的二进制代码是多少
1 # include <stdio.h> 2 int main(void) 3 { 4 //8位二进制代码1000 0000 5 char ch = 0x80; 6 //8位二进制代码0111 1111 7 char ch1 = 0x7F; 8 printf("%d\n", ch); 9 printf("%d\n", ch1); 10 return 0; 11 } 12 /* 13 在vc++6.0中的输出结果:-128 14 127 15 */
(4)已知一个整数的二进制代码求出原始的数字
(5)数字超过最大正数会怎么样

浙公网安备 33010602011771号