c语言基础笔记DAY2_补码变量类型与ASCII码

21 篇文章 0 订阅
15 篇文章 0 订阅

c语言基础笔记DAY2

1.在计算中,负数不直接使用源码的原因?

举例

原码:
+0 : 0000 0000
-0 : 1000 0000
+1 : 0000 0001
-1 : 1000 0001
+1 + (-1) = 0000 0001   +   1000 0001   =   1000 0010  =  -2    ?
  • 在c语言中没有减法 , 直接使用原码计算 , 会导致带符号数计算结果错误
2.原码

数的最原始的二进制码
-0: 1000 0000

+0: 0000 0000

-1: 1000 0001

1: 0000 0001

1 + -1?0000 0001
1000 0001
1000 0010 = -2

注意: 负数如果在计算机中用原码存,会导致两个问题 .

  • 负数运算结果不正确
  • 0的状态还有两种
3.反码

正数的反码不变 ,负数的反码(符号位不变,其他位取反)

-0:1111 1111

+0: 0000 0000

-1:1111 1110

1: 0000 0001

1 + -1 = 1111 1111 = -0

如果计算机用反码去存,负数运算结果正确,但是 0的状态还是有两种

4.补码

正数的补码不变,负数的补码等于反码加1

-0:0000 0000

+0: 0000 0000

-1:1111 1111

1: 0000 0001

1+ -1= 0

如果计算机用补码去存,负数运算结果是正确的,0的状态只有一种

5.补码求原码

-23:

原码: 10010111

反码: 11101000

补码: 11101001

反码: 10010110(补码求原码: 符号位不变,其他位取反)

原码: 10010111(反码求原码: 反码加1)

6.练习例子

int num = 0x80000001; //编译器储存补码
1000 0000 0000 0000 0000 0000 0000 0001 补码
1111 1111 1111 1111 1111 1111 1111 1110 反码
1111 1111 1111 1111 1111 1111 1111 1111 原码

-2147483647

在这里插入图片描述

Tips

1. 在赋值或打印数值时,如果赋值或打印八进制或十六进制的值,则直接以补码形式储存或输出;
2. 如果赋值或打印十进制数值,则是默认会转成补码后,在储存;
3. 如果十进制数值溢出,则默认输入的数值为补码.

7.八进制与十六进制

八进制可以看成是3位 3位 1组的二进制数 : 01 111 010 八进制: 172

十六进制可以看成4位 4位 1组的二进制数: 1010 1111 十六进制:0xaf

8.各类型变量取值范围
数据类型占用空间取值范围
short2字节-32768 到 32767 (-215 ~ 215-1)
int4字节-2147483648 到 2147483647 (-231 ~ 231-1)
long4字节-2147483648 到 2147483647 (-231 ~ 231-1)
unsigned short2字节0 到 65535 (0 ~ 216-1)
unsigned int4字节0 到 4294967295 (0 ~ 232-1)
unsigned long4字节0 到 4294967295 (0 ~ 232-1)
9.字符
字符ASCII码举例
  • 字符’0’ ascii值是48

  • 字符’1’ ascii值是49

  • ‘A’ ascii值是65’B’ ascii值是66

  • ‘a’ ascii值是97’b’ ascii值是98

ASCII字符对照表
ASCII值控制字符ASCII值字符ASCII值字符ASCII值字符
0NUT32(space)64@96
1SOH33!65A97a
2STX34"66B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39,71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92/124|
29GS61=93]125}
30RS62>94^126`
31US63?95_127DEL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值