数据的机器级表示及位运算入门

整型的机器级表示

在计算机中,整型的第一位为符号位,正数为0,负数为1。

原码表示

原码用首位表示符号,其余位表示值。
例如2的原码(8位二进制数表示):
00000010
-2的原码:
10000010

反码

正数反码等于原码,负数反码为按位取反。
例如2的反码:
00000010
-2的反码:
11111101

补码

正数补码等于反码,负数补码为反码+1。
例如2的补码:
00000010
-2的补码:
11111110
计算机一般用补码表示数据,对于8位数据来说,最小值是10000000 (-2^7),最大值是01111111 (2^7-1)

浮点型机器级表示

十进制浮点数转二进制

我们不断将小数部分乘2,取整数部分,例如对于0.625,步骤如下:
0.625*2=1.25 取1
0.25*2=0.5 取0
0.5*2=1 取1
所以0.25的二进制小数就是0.101。
但是,对于0.2这种小数,我们用以上方法:
0.2*2=0.4 取0
0.4*2=0.8 取0
0.8*2=1.2 取1
0.2*2=0.4 取0
……
可以看到,这是一个无限循环的过程。在python中,我们计算0.4+0.2得到的不是正好0.6,这也是浮点数误差产生的原因。所以当我们判断两个浮点数是否相等时,我们不能用a= =b而要用fabs(a-b)<0.000001的原因。
http://dluacm.cn/wp-content/uploads/2021/12/py0.40.2.png

IEEE754浮点数表示法

参考:https://blog.csdn.net/gao_zhennan/article/details/120717424

位运算入门

按位与

用&表示,运算规则为:1&1=1,1&0=0,0&1=0,0&0=0。
例如3&6=2

按位或

用|表示,运算规则为:1&1=1,1&0=0,0&1=0,0&0=0。
例如3&6=7

按位异或(xor)

用^表示,运算规则为:1&1=0,1&0=1,0&1=1,0&0=0。相同为0,不同为1。
例如3&6=5

异或有一个性质,如果a^b=c,那么c^b=a,c^a=b。

左移

即将全部二进制位向左移动,高位消失,最右边补0。

我们用6位数表示,例如100001左移1位后为000010。

右移

即将全部二进制位向右移动,低位消失,最左边补0。

我们用6位数表示,例如100001左移1位后为010000。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇