二进制数的三种形式—–原反补

二进制数的三种形式—–原反补原反补的基本概念 1 原码 一个十进制数字直接转化成的二进制序列反码 将原码按位取反 无符号型 补码 补码 反码 12 数据范围 无符号数 int 类型 0 255 有符号数 char 类型 128

大家好,欢迎来到IT知识分享网。

原反补的基本概念:

== 规定: 1000 0000 = -128 (因为发生了截断)==

把数据的低权值字节数据,放在了低地址字节里面,这种存放方式,就叫做小端;(小小小)
把数据的低权值字节数据,放在了高地址字节里面,这种存放方式,就叫做大端;

知识小练:

code 1:
运行时打开内存监视,便于查看二进制存储(大小端)

int a = 1; printf("a=%d\n", *(char*)&a); 

在这里插入图片描述
1 的二进制序列: 0x00 01 — 01 处于低权值
(01 存储在低地址中,故为小端存储)

code 2:

char a = -1; signed char b = -1; unsigned char c = -1; printf("a=%d,b=%d,c=%d", a, b, c); 

注意:打印是是以 %d 形式(十进制整数形式)

结果:在这里插入图片描述
a —char 类型
b—- signed char 有符号
c—- unsigned char 无符号


-1 == 1000 0001 (二进制)

code 3:

 char a = -128; printf("%u\n", a); 

code 4:

char a = 128; //1000 0000 printf("%d\n", a): //int [-128~127] 

code 5:

 int i = -20; unsigned int j = 10; printf("%d\n", i + j); 

code 6:

 unsigned int i; // i无符号数,[0-i] >=0 会形成死循环 for (i = 9; i >= 0; i--) { 
    printf("%u\n", i); } 

code 7:

int main() { 
    char a[1000] = { 
    0 }; int i = 0; for (i = 0; i < 1000; i++) { 
    a[i] = -1 - i; } printf("%d", strlen(a)); // strlen 计算字符串长度 ,遇到'\0'就停止  return 0; } 

code 8:

unsigned char i = 0; int main() { 
     for (i = 0; i <= 255; i++) { 
     printf("hello world"); } system("pause"); return 0; } 

code 9:

int main() { 
     unsigned char a = 200; unsigned char b = 100; unsigned char c = 0; c = a + b; printf("%d %d", a + b, c); return 0; } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/136626.html

(0)
上一篇 2025-06-26 09:21
下一篇 2025-06-26 09:22

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信