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)数字超过最大正数会怎么样

 

posted @ 2024-08-21 11:25  java帝国  阅读(34)  评论(0)    收藏  举报